我使用以下代码来调整图像大小,但问题是它们不能保持原始的宽高比,有没有办法在不影响宽高比的情况下调整图像大小。
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 :(得分:2)
您可能需要阅读the docs of getScaledInstance()
:
Image java.awt.Image.getScaledInstance(int width, int height, int hints)
创建此图像的缩放版本。返回一个新的Image对象 这将使图像处于指定的宽度和高度 默认。即使是,也可以异步加载新的Image对象 原始源图像已完全加载。
如果宽度或高度为负数,则值为 替换以保持原始图像的纵横比 尺寸。如果宽度和高度均为负值,则为原始值 使用图像尺寸。
(强调我的)
答案 1 :(得分:0)
我不知道您运行代码的服务器是什么,但如果您在基于Linux的系统上运行它,您可以使用imagemagick convert 命令。
还有一个可用于调用imagemaick的java库,名为JMagick