在Java中,我如何将图像调整为任何类型或大小的默认大小?
你不能轻松地将图像从一个文件大小调整到另一个,但是大多数JPG/PNG/GIF等文件大小基于它们的分辨率往往相似。例如,一个200kb压缩的JPG可能通常是1280x960大小。如果是这种情况,你只需要针对所有的调整操作调整目标图像的大小为那个大小,就可以大致获得你想要的大小限制。
一种非常简单的方法是使用非常简单的java 图像调整库(Apache 2许可证),它可以为你完成所有操作。示例代码如下所示:
BufferedImage img = ImageIO.read(...); // load image
BufferedImage scaledImg = Scalr.resize(img, 1280, 960);
您的图像比例得到保留,库会根据缩放后图像变化量(最快速,平衡或最优质),并始终使用最佳支持的Java2D图像类型来执行缩放,以避免出现“黑色”结果或非常糟糕的输出(例如过度抖动的GIF图像)。
此外,如果您想强制输出在Java中最好的结果,则API调用应该如下所示:
BufferedImage img = ImageIO.read(...); // load image
BufferedImage scaledImg = Scalr.resize(img, Method.QUALITY, 1280, 960);
该库使用Java2D推荐的增量缩放来为您提供最佳的外观效果。
您可以阅读库中的所有注释(代码本身有很多文档),以查看所有解决的不同JDK错误或优化,以改善性能或内存使用情况。我花了很多时间调整这个实现,并且从部署它在Web应用程序和其他Java项目中的人们那里得到了很多好的反馈。
网络上有很多关于如何操作这些的完整文章,像以下这些内容可以帮助你入门: