使用低内存消耗在Java中调整图像大小

Ben*_*lts 7 java image

ImageMagick的"转换"命令行工具允许您在执行操作时指定内存使用限制.我想找一个提供相同选项的Java图像大小调整库.我的应用程序有时会获得非常大的JPEG,并需要将它们下采样到合理的大小.例如,11600 x 5152图像将消耗大约227MB的内存,只需将其解压缩; 调整大小的过程比使用更多.

在Java中,有没有办法将非常大的图像调整到合理的大小而不在内存中解压缩整个图像?

jav*_*ats 3

我认为这个主题已经在某种程度上进行了讨论:What is the best java imageprocessing library/approach?

然而,Java 本身提供了一个图像操作和处理 API,它可以读取(并因此操作)块中的像素数据;您可以围绕它编写代码以按预期执行,但根据您的需求,性能的实际改进并不值得。

根据您的需要,实现最佳性能的一个可靠方法是通过 JNI,使用某种本机解决方案(如纯 C OpenGL 代码)来处理图像加载和处理。但您肯定意识到,出于同样的原因,这可能被认为是矫枉过正,根本不值得这么麻烦。同样,这里已经讨论过:Load a PNG image into Java as BufferedImage through JNI C code