获得BufferedImage所需的宽高比

时间:2013-05-14 16:44:27

标签: java image bufferedimage image-resizing java-2d

我使用以下代码调整图像大小,通过将一个参数设置为负,使用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"));



    }
}

BufferedImage creating extra blank background

1 个答案:

答案 0 :(得分:2)

您可以进行数学计算以获得原始图像宽高比

double ratio = img1.getWidth() / img1.getHeigth();

并以此比率调用getScaledInstance

blabla.getScaledInstance(500, (int)500 / ratio, Image.SCALE_SMOOTH);