【问题标题】:resizing an image without compromising the aspect ratio在不影响纵横比的情况下调整图像大小
【发布时间】:2013-05-14 14:52:17
【问题描述】:

我使用以下代码调整图像大小,但问题是它们不保持原始纵横比,有什么方法可以在不影响纵横比的情况下调整图像大小。

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

【问题讨论】:

标签: java image resize bufferedimage java-2d


【解决方案1】:

您可能想阅读the docs of getScaledInstance()

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

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

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

(强调我的)

【讨论】:

  • 如何计算getScaledInstance函数中的高度和宽度,使其保持原来的纵横比。
【解决方案2】:

我不知道你在哪个服务器上运行你的代码,但是如果你在基于 linux 的系统上运行它,你可以使用 imagemagick convert 命令。

还有一个 java 库可用于调用 imagemaick,它称为 JMagick

【讨论】:

  • 这与服务器没有任何关系。无需使用imagemagick。 Java 具有他需要的内置功能。
猜你喜欢
  • 2014-03-13
  • 2016-08-10
  • 1970-01-01
  • 1970-01-01
  • 2021-07-21
  • 2010-12-03
  • 2013-10-13
  • 1970-01-01
  • 2021-01-17
相关资源
最近更新 更多