|
문정원 님이 쓰신 글 :
: char *b;
: Graphics::TBitmap *bmp = new Graphics::TBitmap;
: bmp->LoadFromFile(...)
:
: b = (char *)malloc(비트맵크기);
: memcpy(b, bmp, 비트맵크기);
:
: 이렇게 저장한후 다시 b에 저장된 내용을 비트맵에 넣을수있나요?
: 그리구 비트맵 크기는 어떻게 구하나요?
: 알려주세요...
저런식으로 하면 팔레트 정보를 다잊어 버릴겁니다
256색 비트맵도 있고, 하이컬러 비트맵도 있고, 투루칼라도 있을건데 저런식으로 비트맵을 데이터로 보관하고 있는건 옳지 않다고 봅니다
어느분은 ScanLine으로 하신다고 하시는데..
그건 256색 비트맵이면 오류가 안생기겠으나.. 256색 이상이면 char*로는 안될거고
int* 가필요할겁니다 scanline이 뱉어내는값이 void*니깐 형변환해서 써야것죠..
SaveToStream 이라는 메소드가 있읍니다
TMemoryStream* mstream = new TMemoryStream();
try
{
bmp->SaveToStream(mstream);
//여기에 mstream에 데이터들이 들어가 있으니깐
//쓰기 나름이겠죠..
비트맵크기같은건..bmp->Width, bmp->Height등으로 알수있음...
}
__finally
{
delete mstream;
}
|