我正在尝试编辑8bpp的像素.由于此PixelFormat已编制索引,因此我知道它使用颜色表来映射像素值.即使我可以通过将位图转换为24bpp来编辑位图,但8bpp编辑速度要快得多(13ms vs 3ms).但是,在访问8bpp位图时更改每个值会导致一些随机的rgb颜色,即使PixelFormat仍为8bpp.
我目前正在开发c#,算法如下:
(C#)
1-将原始位图加载到8bpp
2-创建具有8bpp的空温度位图,其大小与原始尺寸相同
两个位图的3-LockBits,使用P/Invoke调用c ++方法,我传递每个BitmapData对象的Scan0.(我使用c ++方法,因为它在迭代Bitmap的像素时提供更好的性能)
(C++)
4-根据一些参数创建一个int [256]调色板,并通过将原始像素值传递到调色板来编辑临时位图字节.
(C#)
5- UnlockBits.
我的问题是如何在没有奇怪的rgb颜色的情况下编辑像素值,甚至更好地编辑8bpp位图的颜色表?