我正在尝试将 8-bpp 索引位图转换为 RGB 位图,但没有成功。
第一个问题是返回的调色板GetPalette()
不包含 256 个唯一数字。
到目前为止,这是我的代码:
BitmapData bitmapData;
int paletteSize =b->GetPaletteSize();
ColorPalette colorPalette;
b->GetPalette(&colorPalette,paletteSize/4);
b->LockBits(new Gdiplus::Rect(0,0,b->GetWidth(),b->GetHeight()),0,b->GetPixelFormat(),&bitmapData);
char* scan0 = (char*)bitmapData.Scan0;
width = b->GetWidth();
height = b->GetHeight();
stride = bitmapData.Width*4;
pBitmapData = new char[stride*height];
DWORD B = 0x00FF0000;
DWORD G =0x0000FF00;
DWORD R = 0x000000FF;
int currentIndex=0;
for(int i = 0 ; i < height; i++)
{
for(int j =0 ; j < width; j++)
{
std::stringstream ss;
currentIndex = i*stride+j*3;
pBitmapData[currentIndex+1]= (colorPalette.Entries[scan0[i*width+j]]&&B)>>16;
pBitmapData[currentIndex+2]= (colorPalette.Entries[scan0[i*width+j]]&&G)>>8;
pBitmapData[currentIndex+3]= (colorPalette.Entries[scan0[i*width+j]]&&R);
}
}
b->UnlockBits(&bitmapData);
我怎样才能解决这个问题?