8

JPEG や TIFF などの画像ファイルのフォルダーを印刷するアプリケーションに取り組んでいます。通常、TIFF 画像は白黒 (1bpp) です。

画像を読み込んだ後、適切なプリンター (カラー プリンターまたは白黒プリンター) に画像を送信できるように、画像がカラー白黒グレースケールかを判断したいと考えています。

Bitmapコンストラクターを使用しimage = new Bitmap(filename);て画像をロードしています。

編集:ピクセル深度を確認する答えは、B&W に最適です。すべてのピクセルを反復せずに画像がグレースケールかどうかを確認するアイデアはありますか?

4

2 に答える 2

12

このプロパティをチェックしてください

image.PixelFormat

System.Drawing.Imaging.PixelFormatのいずれかの値と一致します。

B&W プリンタにはモノクロだけでなく、グレー スケールも送信する必要があります。

于 2010-01-27T22:00:10.393 に答える
3

これを確認する適切な方法は次のとおりです。

JPEG ファイルの場合、BitmapのPropertyItemsコレクションを使用して適切なプロパティを確認する必要があります。これには、ビット深度を判断するのに役立つ適切なEXIFタグが含まれている場合があります。次のステップは、 JPEG ヘッダーを解析し、「フレームの開始」マーカーを探し、次に画像内のコンポーネントの数を探すことです。

最後の方法は、JPEG を Bitmap オブジェクトにロードし、ピクセル数を数式 (幅 * 高さ * bytes_per_pixel) と比較することです。したがって、ビットマップをロードし、実際の生データのバイト数が (幅 * 高さ) に等しい場合、画像が 1 ピクセルあたり 1 バイトであり、グレースケールであることが安全な賭けであることがわかります。

最後にチェックしたいのは、ビットマップ自体の PixelFormat です。

TIFFファイル形式の場合、PropertyItems コレクションを使用して同じことを行い、仕様に記載されている適切なタグを確認する必要があります。これらが失敗した場合は、イメージ バイトの比較を行い、最終的に PixelFormat プロパティを最後の手段として使用します。

于 2010-01-28T00:29:39.910 に答える