且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Java图像缩放,而无需将整个图像加载到内存中

更新时间:2023-02-14 21:32:06

我设法使其正常运行,完整代码如下.

I managed to get it working and the full code is as follows.

对reader.setInput(iis,true,true)的调用;是上一篇文章中我所缺少的魔术.

The call to reader.setInput(iis, true, true); is the magic which I was missing from the previous post.

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);