使用EasyBMP库(无论如何都是紧密适应),我有代码将BMP转换为灰度。将BMP转换为纯RGB,无彩色地图?
int monochromeValue (RGBApixel foo)
{
return (foo.Red+foo.Green+foo.Blue)/3;
}
void setToColor (RGBApixel* loc, int newColor)
{
loc->Red = loc->Green = loc->Blue = newColor;
}
void greyscaleImage (BMP* image)
{
int x, y;
for (x = 0; x < image->Width; ++x)
for (y = 0; y < image->Height; ++y)
{
RGBApixel* pixel = elementAt (image, x, y);
setToColor (pixel, monochromeValue (*pixel));
}
}
的RGBA像素
typedef unsigned char ebmpBYTE;
typedef struct RGBApixel
{
ebmpBYTE Blue;
ebmpBYTE Green;
ebmpBYTE Red;
ebmpBYTE Alpha;
} RGBApixel;
代码不让它灰度。一个图像更棕褐色,另一个图像大多灰度,但有一些彩色的亮点。
我假设这与颜色映射有关。我能做些什么来使它只使用RGB,而不通过调色板运行? (改变位深度是好的,如果这样做的话)。
TIA。
好的。它不能解决问题(如果你考虑这个问题,它不会 - 因为新的R,G和B值仍然是相同的,即使关闭了。但我确实包含了你的修正 - 谢谢。 – 2013-04-25 23:19:01