2010-01-27 24 views
6

我正在打印一個包含JPEG和TIFF的圖像文件的文件夾。 TIFF圖像通常是黑色和白色(1bpp)。如何檢查位圖的顏色深度?

加載圖像後,我想,以確定是否該圖像是顏色乙&W¯¯灰度這樣我就可以將圖像發送到正確的打印機(彩色打印機或黑白打印機)。

我使用的是Bitmap構造函數image = new Bitmap(filename);來加載圖像。

編輯:檢查像素深度的答案對於B & W.是偉大的檢查,如果圖像是不通過每個像素的灰度迭代任何想法?

回答

3

檢查正確的方法是:

爲JPEG文件,你應該檢查使用PropertyItems收集位圖的相應屬性。這可能包含適當的EXIF標籤來幫助確定位深度。下一步將解析JPEG header並查找「幀開始」標記,然後查找圖像中組件的數量。

最後一種方法是將JPEG加載到Bitmap對象中,並將像素數量與forumla(width * height * bytes_per_pixel)進行比較。因此,如果您加載位圖並且實際原始數據的字節數等於(寬度*高度),那麼您知道這是一個安全的選擇,圖像每像素1個字節,因此是灰度。

您要檢查的最後一件事是位圖本身的PixelFormat。

對於TIFF文件格式,您應該使用PropertyItems集合執行相同的操作並檢查規範中提到的相應標記。如果這些失敗,則執行圖像字節比較,最後使用PixelFormat屬性作爲最後的手段。

10

System.Drawing.Imaging.PixelFormat

只要檢查該物業

image.PixelFormat 

它將匹配值的一個。雖然你想的不僅僅是黑&白派遣更多到B &W¯¯打印機,也應該在那裏發送任何灰度。

+0

瘋了,我挖掘了Bitmap類的成員列表,不知道我錯過了它。 – 2010-01-27 22:01:19

+0

我還沒有接受答案,因爲我正在測試它。我也考慮過如何檢查灰度。也許我應該編輯這個問題來澄清這一點。 – 2010-01-27 23:44:40

2

使用其PixelFormat屬性。