2013-05-14 150 views
1

我使用以下代码调整图像大小,但问题在于它们不保留原始高宽比,有没有什么方法可以调整图像的大小而不影响图像的宽高比比。在不影响宽高比的情况下调整图像大小

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)); 
+0

的[调整图像大小,同时保持在Java中的纵横比(http://stackoverflow.com/questions/991349/resize-image-while可能重复一个Java库-format-aspect-in-java) – wchargin 2013-05-14 15:13:58

回答

2

您可能需要阅读the docs of getScaledInstance()

Image java.awt.Image.getScaledInstance(int width, int height, int hints) 

创建此图像的缩放版本。返回一个新的图像对象 ,它将使图像在指定的宽度和高度下默认显示 。即使 原始源图像已完全加载,也可以异步加载新的Image对象。

如果宽度或高度都是负数,则将值替换为 以保持原始图像的纵横比 尺寸。如果宽度和高度都是负值,则使用原始的图像尺寸 。

(重点煤矿)

+0

如何在'getScaledInstance'函数中计算高度和宽度,以保持原始高宽比。 – 2013-05-14 15:14:11

0

我不知道什么服务器正在运行你的代码,但如果你是基于linux系统上运行它,你可以使用ImageMagick的转换命令。

还有可供调用imagemaick叫JMagick

+0

这与服务器没有任何关系。没有必要使用'imagemagick'。 Java具有他需要内置的功能。 – wchargin 2013-05-14 15:10:55

相关问题