处理bmp灰度图,为什么调色板会自动改变??
用C编了个程序,读BMP8位灰度图,中值滤波后写出。噪声去的还可以。但是颜色却变成蓝绿色,如果读蓝绿色图再写出,颜色变成黄色,再次运行,变红色,最后终于又变回灰色。
我都没有动文件头和调色板,把1078个字节直接写入新文件的。怎么会这样呢?
而且编了个程序显示调色板信息。定义Palette[256][4],灰度图的调色板是正常的。但是别的图的调色板却在第10行出现问题。如下:
第九行:灰图,有色图都是9 9 9 0
但是第十行,灰图是10 10 10 0,蓝色图却变成13 10 13 10,然后是13 10 0 11,11 11 0 12,12 12 0 13。。。 就这样,颜色就错开了。。。别的图也是一样的道理。
因为灰度图我是用photoshop把彩色图加工得到的,防止是这方面原因,就只将54字节复制进新文件,调色板的数据自己写入。可是依然变蓝色,调色板也会紊乱,只是不是第10行开始,好像更靠前了。。。
而且我写出的图还会整体右偏2,3个像素。应该不是那个4像素偏移的问题,因为我的图是256*256的。所以怀疑也跟调色板错位有关
谁能帮忙解释这个怪异的东西。。。非常感谢阿~~~~~~~~~~~