在不影响宽高比的情况下调整图像大小
问题描述:
我使用以下代码调整图像大小,但问题在于它们不保留原始高宽比,有没有什么方法可以调整图像的大小而不影响图像的宽高比比。在不影响宽高比的情况下调整图像大小
BufferedImage img1 = new BufferedImage(800, 600,
BufferedImage.TYPE_INT_RGB);
img1.createGraphics()
.drawImage(
ImageIO.read(
new File("/home/rvkydmpo/webapps/ROOT/images/profilePicture/"
+ fileName)).getScaledInstance(800,
600, Image.SCALE_SMOOTH), 0, 0, null);
ImageIO.write(img1, "jpg", new File("/home/rvkydmpo/webapps/ROOT/images/profilePicture/" +fileName));
答
您可能需要阅读the docs of getScaledInstance()
:
Image java.awt.Image.getScaledInstance(int width, int height, int hints)
创建此图像的缩放版本。返回一个新的图像对象 ,它将使图像在指定的宽度和高度下默认显示 。即使 原始源图像已完全加载,也可以异步加载新的Image对象。
如果宽度或高度都是负数,则将值替换为 以保持原始图像的纵横比 尺寸。如果宽度和高度都是负值,则使用原始的图像尺寸 。
(重点煤矿)
+0
如何在'getScaledInstance'函数中计算高度和宽度,以保持原始高宽比。 – 2013-05-14 15:14:11
的[调整图像大小,同时保持在Java中的纵横比(http://stackoverflow.com/questions/991349/resize-image-while可能重复一个Java库-format-aspect-in-java) – wchargin 2013-05-14 15:13:58