3

A0プリンターで印刷するときに使用される非常に大きなjpgがいくつかあります。

問題は、いくつかの Java UI で使用するために、この大きな画像をサムネイルに変換する必要があることです。

画像全体をメモリにロードせずに (Java で) 画像を変換する方法はありますか? 現在、画像をロードしようとするとメモリ不足の例外が発生します。

標準コードに何かありますか、それともjmagickを使用するのが最善の策ですか? 純粋な Java 実装は、私たちの展開に最適です。

ありがとう

4

1 に答える 1

8

私はそれをうまく動かすことができました、そして完全なコードは次の通りです。

reader.setInput(iis、true、true);の呼び出し。前回の投稿で欠けていた魔法です。

FileInputStream fin = new FileInputStream(source);

ImageInputStream iis = ImageIO.createImageInputStream(fin);

Iterator iter = ImageIO.getImageReaders(iis);
if (!iter.hasNext()) {
    return;
}

ImageReader reader = (ImageReader) iter.next();

ImageReadParam params = reader.getDefaultReadParam();

reader.setInput(iis, true, true);

params.setSourceSubsampling(width, height, 0, 0);

BufferedImage img = reader.read(0, params);

ImageIO.write(img, "JPG", destination);
于 2012-05-31T08:06:57.053 に答える