调整图像大小而不会丢失信息

时间:2015-03-01 18:37:11

标签: java image resize scale bufferedimage

我试图在MS Word中实现与调整图像大小相同的功能。

我想调整BufferedImage的大小,但是在调整大小的过程中我会丢失一些信息。

我试图实现两种方法,但两者都产生了相同的结果。

在调整大小之前:

enter image description here

在我的应用程序中进行少量调整操作后的图片:

enter image description here

第一种方法:

image = Thumbnails.of(image).size(w,h).asBufferedImage();

第二种方法:

image = toBufferedImage(image.getScaledInstance(w, h, Image.SCALE_SMOOTH));

图像是BufferedImage的实例,w是图像的新宽度,h是图像的新高度

任何想法,我做错了什么?

1 个答案:

答案 0 :(得分:0)

每次调整大小后,您都会不断丢失图像中的信息。如果你想要解决方案(比如在MS Word中)你必须保留原始图像,但只显示调整大小的副本。

最好的解决方案是创建一个对象来存储原始图像并按需调整大小。您可以提高此解决方案的质量,添加简单的缓存,这样您就不会为每个请求生成另一个已调整大小的图像副本,但仅当您的应用程序需要的图像具有与上次不同的高度或宽度时

我希望我能帮到你一点。