2013-11-03 81 views
1

我正在使用一種方法來獲取圖像的像素來檢查這個點是否透明。我正在使用GetPixel,它返回帶有32位顏色信息的System.Drawing.Color。C#GDI - 如何檢查像素是否不透明?

該結構具有「A」屬性,我可以根據此MSDN topic獲取像素的Alpha值。

代碼:

using (Bitmap bmp = new Bitmap(path)) 
{ 
    Color pixel = bmp.GetPixel(0, 0); 
    if (pixel.A == 0) 
     // This is a fully transparent pixel 
    else 
     // This is not a fully transparent pixel 
} 

是如何檢查是否像素是不透明或不正確的方法是什麼?

+1

不透明是255 alpha通道。 – OneFineDay

+0

我同意,這是明確的MSDN文章,但我從來沒有得到這個價值。對於PNG和GIF圖像,此通道最多可以顯示86個圖像,而對於完全不透明的JPEG圖像,我會獲得其他不固定的值。 – rkawano

+1

FWIW:JPEG圖像文件不能表示透明度。我認爲JPEG2000格式可以,但不是原始JPEG。我不知道爲什麼bmp.GetPixel會在JPEG通道的alpha通道中返回垃圾。 – dthorpe

回答

4

對於alpha通道值是:

Opaque = 255 
Translucent = 1-254 
Transparent = 0 
+0

你說得對,我的位圖出錯了。我編輯刪除錯誤的內容。謝謝。 – rkawano