Java 映像缩放,而不将整个映像加载到内存中



我们有一些非常大的jpg,在A0打印机上打印时使用。

问题是我们需要将这个大图像转换为缩略图,以便在一些java UI中使用。

有没有办法在不将整个图像加载到内存中的情况下转换图像(使用 Java)? 目前,当我们尝试加载图像时,我们会出现内存不足异常。

标准代码中是否有任何内容,或者我使用jmagick的最佳选择是什么? 纯 java 实现最适合我们的部署。

谢谢

我设法让它工作,完整的代码如下。

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

相关内容

  • 没有找到相关文章

最新更新