我正在尝试将彩色 BMP 文件转换为灰度 BMP。输入 bmp 是 24 位的,我在输出端生成相同的 24 位 bmp,只是这次是灰度。
我正在使用的代码是
for(int x = 0; x < max; x++)
{
int lum;
lum = (r[x]*0.30) + (g[x]*0.59) + (b[x]*0.11);
r[x] = lum;
g[x] = lum;
b[x] = lum;
}
, r
,数组是 RGB 颜色分量g
,b
我将它们放在char *r,*g,*b
.
由于某些原因,我没有得到干净的输出。我附上了我得到的这个问题的输出,它不完整,并且在一些地方包含白色和黑色区域。那么我在这里做错了什么?
- 是由于计算lum的数据丢失还是将int存储为char有什么问题?
- 灰度bmp可以不是24位吗?还是我在转换后存储 rgb 值的方式有问题?
对此的任何帮助将不胜感激。谢谢。