目次||

3.4 ImageWriterクラス

ImageIOクラスのメソッドを使用して特定のイメージ形式用のImageReaderのリストを取得できるのと同じように、ImageWriterのリストも次のようにして取得できます。

Iterator writers = ImageIO.getImageWritersByFormatName("png");
ImageWriter writer = (ImageWriter)writers.next();

ImageWriterを取得した後は、その出力先を、次のようにしてImageOutputStreamに設定する必要があります。

File f = new File("c:\images\myimage.png");
ImageOutputStream ios = ImageIO.createImageOutputStream(f);
writer.setOutput(ios);

最終的に、次のようにして、イメージを出力ストリームに書き込むことができます。

BufferedImage bi;
writer.write(bi);

3.4.1複数のイメージの書込み

IIOImageクラスを使用すると、1つのイメージ、1つまたは複数のサムネイル、およびイメージに関連するメタデータ(イメージ以外のデータ)への参照を格納できます。メタデータについては、後で説明します。ここでは、メタデータ関係のパラメータの値としてnullを渡すだけにしておきます。

ImageWriterクラスには、IIOImageから新しいファイルを作成するwriteメソッドと、IIOImageを既存のファイルに追加するwriteInsertメソッドがあります。次のように、この2つのメソッドを続けて呼び出すことにより、マルチイメージ・ファイルを出力できます。

BufferedImage first_bi, second_bi;
IIOImage first_IIOImage = new IIOImage(first_bi, null, null);
IIOImage second_IIOImage = new IIOImage(second_bi, null, null);
writer.write(null, first_IIOImage, null);
if (writer.canInsertImage(1)) {
        writer.writeInsert(1, second_IIOImage, null);
} else {
        System.err.println("Writer can't append a second image!");
}



目次||

Copyright © 1993, 2020, Oracle and/or its affiliates. All rights reserved.