-2
我正在製作一個程序來自動對圖像執行某些編輯。c#.NET - 用lockbits提取原始像素數據
上述功能之一是轉換「白色」像素「白色」和透明的。一開始,一切都很好。
我設法一個24bppRGB圖像轉換成圖像32bppRGB與所需的像素全透明。
圖片在圖片框中加載,一旦保存即可打開。
的問題出現了,當我試圖重新編輯該文件。當我試圖再次提取原始像素數據時,我什麼都沒有。據我可以告訴整個像素數據數組爲0。
爲什麼會出現這種情況?
^這是我的主要問題。 之外的問題,我也注意到有該程序的一些怪癖,這些都只是出於好奇:
有什麼區別:
for(int i = 0; i < (x + 1); i += y)
和
for(int i = 0; i <= (x); i += y)
並且:
byte = 4;
for(int i = 0; i < x - byte; i += byte)
和
當我解鎖位圖3210for(int i = 0; i < x - byte; i += 4)
的第二一個引起了AccessViolationException。
如果可能,請儘可能簡化說明。我在這方面相當新穎。 謝謝你的時間。
難道是'PixelFormat'不匹配在調用LockBits,打開32bppARGB圖像時? – Anlo 2012-04-18 11:46:05
我在你的問題中增加了代碼格式,但第二套'for'循環作爲一個問題沒有意義,你可能需要澄清。 – 2012-04-18 12:33:35
嗯,我嘗試使用bmp.PixelFormat以及PixelFormat.Format32bppArgb。既不產生圖像。 – user1341109 2012-04-19 04:25:37