使用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