|
24bit입니다.
32bit는 bmp는 어디서 구하죠?
24비트보다 1바이트 큰데 어떤 값이 들어있는지 분석해서 적용해 보십시요.
click()
{
Graphics::TBitmap*p=new Graphics::TBitmap();
p->LoadFromFile("c:\\a1_24.bmp");
int w=p->Width;
int h=p->Height;
int f=p->PixelFormat;
if(f!=pf24bit){
delete p;
ShowMessage("i don't know another PixelFormat");
return;
};
TMemoryStream*m=new TMemoryStream();
m->Position=0;
m->WriteBuffer(&w,sizeof(int));
m->WriteBuffer(&h,sizeof(int));
m->WriteBuffer(&f,sizeof(int));
for(int i=0;i<h;i++){
unsigned char*a=(unsigned char*)p->ScanLine[i];
m->WriteBuffer(a,w*3);
}
delete p;
m->SaveToFile("c:\\temp.tmp");
delete m;
ShowMessage("save done! -- click to read");
m=new TMemoryStream();
m->LoadFromFile("c:\\temp.tmp");
m->Position=0;
m->Read(&w,sizeof(int));
m->Read(&h,sizeof(int));
m->Read(&f,sizeof(int));
int size=w*3;
unsigned char*a=new unsigned char[size];
for(int i=0;i<h;i++){
m->Read(a,size);
for(int k=0;k<w;k++){
Canvas->Pixels[k][i]=RGB(a[k*3+2],a[k*3+1],a[k*3+0]);
}
}
delete a[];
delete m;
}
이단자 님이 쓰신 글 :
: TBitmap에 있는 정보중 크기와 실제 이미지 데이타만 저장했다가 다시 읽어 들리려면 어떻게 해야 하나요..
: 32bit로 저장했다가 읽으려면.... 도와주세요
:
: ScanLine을 이용해서 해 봤는데.. 잘 안되더군요. 좀 갈켜 주세요
|