我使用以下代码调整图像大小,通过将一个参数设置为负,使用getScaledInstance
函数可以轻松获得与原始图像相同的宽高比,以便自动将另一个参数保持为获得宽高比。但是我面临的问题是BufferedImage
,我无法将其设置为所需的宽高比,因为我事先不知道它将生成什么样的高度值(宽度我设置为500)。我有还包括运行以下代码后我可以获得的图像。 BufferedImage
我已设置为800x600,因为我没有其他选择。我之前的问题是resizing an image without compromising the aspect ratio
public class ResizeImage {
public static void main(String[] args) throws IOException {
BufferedImage img1 = new BufferedImage(800, 600,
BufferedImage.TYPE_INT_RGB);
img1.createGraphics()
.drawImage(
ImageIO.read(
new File(
"C:/Users/Public/Pictures/Sample Pictures/Desert.jpg"))
.getScaledInstance(500, -1, Image.SCALE_SMOOTH),
0, 0, null);
ImageIO.write(img1, "jpg", new File(
"C:/Users/Public/Pictures/Sample Pictures/test/Desert.jpg"));
}
}
答案 0 :(得分:2)
您可以进行数学计算以获得原始图像宽高比
double ratio = img1.getWidth() / img1.getHeigth();
并以此比率调用getScaledInstance
blabla.getScaledInstance(500, (int)500 / ratio, Image.SCALE_SMOOTH);