我試圖編輯8bpp的像素。由於這PixelFormat索引,我知道它使用顏色表來映射像素值。儘管我可以通過將位圖轉換爲24bpp來編輯位圖,但8bpp編輯速度更快(13ms vs 3ms)。但是,訪問8bpp位圖時更改每個值會導致一些隨機的rgb顏色,即使PixelFormat保持8bpp。編輯8bpp索引位圖
我目前正在開發在C#和算法如下:
(C#)在8bpp的
2-
1-加載原始位圖與和8bpp的創建空臨時位圖與原始大小相同
這兩個位圖的3-LockBits以及使用P/Invoke調用每個BitmapData對象的Scan0的C++方法。 (I使用C++方法通過位圖的像素迭代時,因爲它提供更好的性能)
(C++)
4-創建INT根據一些參數[256]調色板和通過使編輯臨時位圖字節原始像素值通過調色板。
(C#)
5- UnlockBits。
我的問題是如何編輯像素值,而不會有奇怪的RGB顏色,甚至更好,編輯8bpp位圖的顏色表?
感謝您的回答。我知道我可以通過更改位圖的調色板屬性來修改位圖的調色板。但是這樣做太慢了。我希望有人能告訴我如何訪問顏色表指針,以便我可以直接修改它。 SetPixel不起作用,也非常緩慢。 我不明白爲什麼像素被分配了rgb顏色,當我將其值從0(黑色)更改爲100(應該是灰色,但是是紅色)。 – 2010-04-07 15:20:15
嗯。 'Bitmap'從'Image'繼承,因此具有相同的調色板。你可以簡單地用'bm2.Palette = bm1.Palette'複製調色板。 – Nyerguds 2018-01-22 21:48:04