2

私はこの手順を実行します:

TIFFEncodeParam tep = new TIFFEncodeParam();

tep.setCompression(TIFFEncodeParam.COMPRESSION_JPEG_TTN2);

BufferedImage buff = new BufferedImage(newimage.getWidth(null),
                                                   newimage.getHeight(null),
                                                   BufferedImage.TYPE_BYTE_BINARY);
//newimage is an awt image

buff.createGraphics().drawImage(newimage, 0,0,null);

ParameterBlock outPB = new ParameterBlock();

outPB.addSource(buff);
outPB.add("myjpegfile.jpg");
outPB.add("tiff");
outPB.add(tep);

PlanarImage outPI = JAI.create("filestore",outPB);

ここで、java.lang.Error: JPEG-in-TIFF エンコーディングは、8 ビット サンプルと、1 ピクセルあたり 1 (グレースケール) または 3 (RGB または YCbCr) サンプルのいずれかでのみサポートされています。

これは、モノクロ画像の jpeg ファイルを最大限に圧縮する必要があるためです。tiff (24Kb) と jpeg (212Kb) (A4 ページ サイズ 200dpi BW) は書き込めますが、jpeg は大きすぎます。

このエラーはどういう意味ですか? 8 ビット サンプルとは

どうも。

4

2 に答える 2

3

これは、JPEG-in-TIFF が 8 ビット グレースケール (= 1 ピクセルあたり 8 ビットの 1 サンプル) または 24 ビット カラー イメージ (= 1 ピクセルあたり 8 ビットの 3 サンプル) のみをサポートすることを意味します。

TYPE_BYTE_BINARY は白黒画像を表します (= ピクセルあたり 1 ビットの 1 サンプル)。代わりに TYPE_BYTE_GRAY を使用することをお勧めします。

于 2011-07-20T11:30:46.087 に答える
1

B&W jpg のようなものはありません。B&W とは、1 ピクセルあたり 1 ビットの画像を意味し、各ピクセルは黒または白のいずれかです。また、通常、白黒スキャンをグレースケールに変換してから JPEG 圧縮で保存すると、元の白黒画像を TIFF や PNG などの圧縮形式で保存するよりもサイズが大きくなります。B&W スキャンの小さなシャープなモノクロ エッジは、JPEG が圧縮する可能性が最も低いものです。

複製しようとしているファイルを再調査し、その実際の形式をよりよく理解する必要があります。多分それはJBIG2ファイルですか?これは、非常にうまく機能する B&W 圧縮形式です。

私が見た別の可能性は、実際には TIFF または PNG 形式の拡張子 'jpg' を持つファイルがあることです。ファイルの最初の数バイトを見て、その署名を使用してファイルの形式を識別します (例: here ) 。JPEG の場合は、 Calvin HassのJPEGsnoopなどのプログラムを使用して詳細を取得します。(個人的な関係はありません。私はただの幸せなユーザーです。) 実際に TIFF である場合は、Aware SystemsのAsTiffTagViewerで詳細を取得できます。

于 2013-04-08T14:03:58.400 に答える