|
TBitmap*bmp=new TBitmap();
bmp->LoadFromFile("c:\\24bit.bmp");
TBitmap*bmp256=new TBitmap();
bmp256->PixelFormat=pf8bit;
bmp256->Width=bmp->Width;
bmp256->Height=bmp->Height;
struct s_pal{
LOGPALETTE pal;
PALETTEENTRY dummy[256];
};
s_pal new_pal;
new_pal.pal.palVersion=0x300;
new_pal.pal.palNumEntries=256;
for(int i=0;i<256;i++){
new_pal.pal.palPalEntry[i].peRed=i;
new_pal.pal.palPalEntry[i].peGreen=i;
new_pal.pal.palPalEntry[i].peBlue=i;
}
bmp256->Palette=CreatePalette(&new_pal.pal);
for(int j=0;j<bmp256->Height;j++){
byte*s=(byte*)bmp->ScanLine[j];
byte*d=(byte*)bmp256->ScanLine[j];
for(int i=0;i<bmp256->Width;i++){
*(d+i)=(*(s+i*3+0)+*(s+i*3+1)+*(s+i*3+2))/3;
}
}
bmp256->SaveToFile("c:\\8bit.bmp");
delete bmp256;
delete bmp;
광땡 님이 쓰신 글 :
: 24Bit BMP, JPG 파일을 Load하여 8Bit Gray로 변경하여 저장하고 싶은데
: 어떻게 해야할지 모르겠네요.
: 방법 좀 알려주세요.
|