我想检查图像的尺寸,如果宽度超过给定的阈值,则将其缩小。当我使用ImageIO.read()加载6MB JPEG图像时,BufferedImage会分配大约45MB的堆空间。有没有办法在不将所有数据加载到内存的情况下调整直通图像的大小?我尝试将File对象传递给ImageIO.read(),以为它将从磁盘流式传输数据,但这没有帮助。
查看im4java和JMagick。两者都使用称为ImageMagick的极其有效的外部工具进行图像处理。Im4Java调用命令行应用程序(在单独的进程中运行),而JMagick通过JNI在同一进程内调用它。
如果我要进行简单的图像处理(调整大小,缩放,旋转等),我宁愿让ImageMagick替我做。与您在类似时间内实现的任何东西相比,它将更快,更可靠并且消耗更少的内存。
希望这可以帮助!
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句