0

画像操作に JAI_IO を多用する古いコード (Java 1.2) があります。現在は Java 1.6 であるため、これは必要ありません。まず、まだ BufferedImage を使用する必要がありますか? それとももっと良いクラスがありますか?私が基本的に行う必要があるのは次のとおりです。

  1. ビットマップをある形式から別の形式 (通常は PNG) に変換します。
  2. 画像のメタデータを取得します: ピクセル単位のサイズ、DPI、およびビットマップ形式。
  3. 画像のサイズを変更します。
  4. Graphics2D オブジェクトに画像を描画します。
  5. ビットマップ内のピクセルをたどって、読み取りおよび/または設定します (これは遅くなる可能性があり、めったに使用されません)。

答えは「ははは」だと思いますが、メタファイルをビットマップに変換するクラスはありますか?

ありがとう - デイブ

4

1 に答える 1

0

私はImageIOjavax.imageioAPI を使用して画像を読み取り、DPI/PPI を調整し (例については以下を参照)、必要に応じてサイズを変更するimgscarサムネイルレーターなどのパッケージを使用します。

コードは次のようになります。

// input is typically a File or InputStream

// Wrap in ImageInputStream
ImageInputStream stream = ImageIO.createImageInputStream(input);

// Obtain reader
ImageReader reader = ImageIO.getImageReaders(stream).next(); // In real code, test for presence
reader.setInput(stream);

String formatName = reader.getFormatName(); // Get the format name

ImageReadParam param = reader.getDefaultReadParam();

// ... modify params as you see fit, or just go with defaults

IIOImage image = reader.readAll(0, param);

RenderedImage red = image.getRenderedImage();
BufferedImage buf = (BufferedImage) red; // In real code, test if it's safe, or convert

// .. pas buf along to imgscalr or thumnailator

image.setRenderedImage(buf);

IIOMetadata meta = image.getMetadata();

// ... modify DPI in meta data

ImageWriter writer = reader.getImageWriter();
writer.write(null, image, null); // Or modify write params if you need (last parameter)

ここで、JPEG ファイルの DPI を変更する例を確認できます。

于 2014-10-17T16:17:53.353 に答える