在不丢失信息的情况下调整图像大小
Resize image without loss of information
我试图实现与 MS Word 中相同的调整图像大小的功能。
我想调整 BufferedImage 的大小,但我在调整大小时丢失了一些信息。
我尝试实施两种方法,但都产生了相同的结果。
调整大小之前:
在我的应用程序中进行几次调整大小操作后的图片:
第一种方法:
image = Thumbnails.of(image).size(w,h).asBufferedImage();
第二种方法:
image = toBufferedImage(image.getScaledInstance(w, h, Image.SCALE_SMOOTH));
图像是BufferedImage的实例,w是图像的新宽度,h是图像的新高度
知道吗,我做错了什么?
每次尝试调整大小后,您都会不断丢失图像中的信息。如果你想要解决方案(比如在 MS Word 中),你必须保留原始图像但只显示调整大小的副本。
最好的解决方案是创建一个对象来存储原始图像并根据需要制作调整大小的副本。您可以通过添加简单的缓存来提高此解决方案的质量,这样您实际上不会为每个请求生成另一个调整大小的图像副本 ,但前提是 您的应用程序需要与上次不同高度或宽度的图像时间.
希望对你有所帮助。
我试图实现与 MS Word 中相同的调整图像大小的功能。
我想调整 BufferedImage 的大小,但我在调整大小时丢失了一些信息。
我尝试实施两种方法,但都产生了相同的结果。
调整大小之前:
在我的应用程序中进行几次调整大小操作后的图片:
第一种方法:
image = Thumbnails.of(image).size(w,h).asBufferedImage();
第二种方法:
image = toBufferedImage(image.getScaledInstance(w, h, Image.SCALE_SMOOTH));
图像是BufferedImage的实例,w是图像的新宽度,h是图像的新高度
知道吗,我做错了什么?
每次尝试调整大小后,您都会不断丢失图像中的信息。如果你想要解决方案(比如在 MS Word 中),你必须保留原始图像但只显示调整大小的副本。
最好的解决方案是创建一个对象来存储原始图像并根据需要制作调整大小的副本。您可以通过添加简单的缓存来提高此解决方案的质量,这样您实际上不会为每个请求生成另一个调整大小的图像副本 ,但前提是 您的应用程序需要与上次不同高度或宽度的图像时间.
希望对你有所帮助。