私は5つの単一ページのtiff画像を持っています。これら5つのtiff画像すべてを1つのマルチページtiff画像に結合したいと思います。Java AdvancedImagingAPIを使用しています。SUNが提供するJAIAPIのドキュメントとチュートリアルを読みました。JAIは初めてです。私は基本的なコアJavaを知っています。私はそれらのドキュメンテーションとSUNによるturorialを理解していません。だから友達5つのtiff画像ファイルを1つの複数ページのtiff画像に結合する方法を教えてください。上記のトピックに関するガイダンスを教えてください。私は上記のトピックをインターネットで検索していますが、手がかりは1つもありません。
23824 次
1 に答える
12
これを行うためのコンピューターのメモリがあることを願っています。TIFF 画像ファイルはサイズが大きくなります。
これを行うには、 Java Advanced Imaging (JAI) API を使用する必要があるという点で正しいです。
まず、TIFF イメージをjava.awt.image.BufferedImageに変換する必要があります。おそらく動作するコードをいくつか示します。このコードはテストしていません。
BufferedImage image[] = new BufferedImage[numImages];
for (int i = 0; i < numImages; i++) {
SeekableStream ss = new FileSeekableStream(input_dir + file[i]);
ImageDecoder decoder = ImageCodec.createImageDecoder("tiff", ss, null);
PlanarImage op = new NullOpImage(decoder.decodeAsRenderedImage(0), null, null, OpImage.OP_IO_BOUND);
image[i] = op.getAsBufferedImage();
}
次に、BufferedImage 配列を変換して複数の TIFF イメージに戻します。このコードもテストしていません。
TIFFEncodeParam params = new TIFFEncodeParam();
OutputStream out = new FileOutputStream(output_dir + image_name + ".tif");
ImageEncoder encoder = ImageCodec.createImageEncoder("tiff", out, params);
Vector vector = new Vector();
for (int i = 0; i < numImages; i++) {
vector.add(image[i]);
}
params.setExtraImages(vector.listIterator(1)); // this may need a check to avoid IndexOutOfBoundsException when vector is empty
encoder.encode(image[0]);
out.close();
于 2010-07-02T13:40:55.113 に答える