我正在打印一個包含JPEG和TIFF的圖像文件的文件夾。 TIFF圖像通常是黑色和白色(1bpp)。如何檢查位圖的顏色深度?
加載圖像後,我想,以確定是否該圖像是顏色或乙&W¯¯或灰度這樣我就可以將圖像發送到正確的打印機(彩色打印機或黑白打印機)。
我使用的是Bitmap
構造函數image = new Bitmap(filename);
來加載圖像。
編輯:檢查像素深度的答案對於B & W.是偉大的檢查,如果圖像是不通過每個像素的灰度迭代任何想法?
我正在打印一個包含JPEG和TIFF的圖像文件的文件夾。 TIFF圖像通常是黑色和白色(1bpp)。如何檢查位圖的顏色深度?
加載圖像後,我想,以確定是否該圖像是顏色或乙&W¯¯或灰度這樣我就可以將圖像發送到正確的打印機(彩色打印機或黑白打印機)。
我使用的是Bitmap
構造函數image = new Bitmap(filename);
來加載圖像。
編輯:檢查像素深度的答案對於B & W.是偉大的檢查,如果圖像是不通過每個像素的灰度迭代任何想法?
檢查正確的方法是:
爲JPEG文件,你應該檢查使用PropertyItems收集位圖的相應屬性。這可能包含適當的EXIF標籤來幫助確定位深度。下一步將解析JPEG header並查找「幀開始」標記,然後查找圖像中組件的數量。
最後一種方法是將JPEG加載到Bitmap對象中,並將像素數量與forumla(width * height * bytes_per_pixel)進行比較。因此,如果您加載位圖並且實際原始數據的字節數等於(寬度*高度),那麼您知道這是一個安全的選擇,圖像每像素1個字節,因此是灰度。
您要檢查的最後一件事是位圖本身的PixelFormat。
對於TIFF文件格式,您應該使用PropertyItems集合執行相同的操作並檢查規範中提到的相應標記。如果這些失敗,則執行圖像字節比較,最後使用PixelFormat屬性作爲最後的手段。
在System.Drawing.Imaging.PixelFormat
只要檢查該物業
image.PixelFormat
它將匹配值的一個。雖然你想的不僅僅是黑&白派遣更多到B &W¯¯打印機,也應該在那裏發送任何灰度。
使用其PixelFormat屬性。
瘋了,我挖掘了Bitmap類的成員列表,不知道我錯過了它。 – 2010-01-27 22:01:19
我還沒有接受答案,因爲我正在測試它。我也考慮過如何檢查灰度。也許我應該編輯這個問題來澄清這一點。 – 2010-01-27 23:44:40