如何在Java中将原始图像调整为常见的图像尺寸?

23
在Java中,我如何将图像调整为任何类型或大小的默认大小?
2个回答

17

你不能轻松地将图像从一个文件大小调整到另一个,但是大多数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项目中的人们那里得到了很多好的反馈。


10

网络上有很多关于如何操作这些的完整文章,像以下这些内容可以帮助你入门:


1
实际上我说的是文件大小(3MB -> 200KB),而不是图像的尺寸。这也包括它们吗? - Anand
@Anand,你找到解决方案了吗? - swapnil gandhi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接