gpt4 book ai didi

java - BufferedImage.getScaledInstance() 不调整图像大小

转载 作者:太空宇宙 更新时间:2023-11-04 11:31:27 25 4
gpt4 key购买 nike

我在理解这行代码时遇到一些问题:

bufferedImage.getScaledInstance(100, -1, Image.SCALE_SMOOTH);

我用它来调整具有以下数字的图像大小。宽度:3264px,高度:2448px,水平和垂直分辨率:150dpi,大小:2.72MB。

然后我使用将 bufferedImage 保存到文件中

ImageIO.write(bufferedImage, "jpg", outputFile);

生成的图片具有以下数字:相同的宽度和高度 (3264x2448),水平和垂直分辨率:96dpi,大小:674KB。

图片的宽度不是应该是 100px 吗?并且无论高度如何以保持宽高比(根据 Javadoc)?为什么结果图片具有相同的宽度和高度,但水平分辨率和尺寸不同?我是否遗漏了一些东西,因为似乎无论宽度和高度的值是什么,结果图片总是与上面描述的相同。

我还读到,我应该将调整大小的 BufferedImage 绘制到 Graphics2D 中,并将 Graphics2D 保存到文件中。这是正确的方法吗?而不是将 BufferedImage 直接保存到文件中?

我使用的图像是 here

最佳答案

您没有收到 .getScaledInstance() 的响应。它不会修改 bufferedImage,而是返回缩放后的图像实例。由于使用“jpg”,您可能会在输出图像中看到分辨率发生变化。

所以你必须执行以下操作;

Image scaledImage = bufferedImage.getScaledInstance(100, -1, Image.SCALE_SMOOTH);
// map Image to BufferedImage
ImageIO.write(scaledBufferedImage, "jpg", outputFile);

要从缩放后的 Image 创建 BufferedImage,请使用以下 answer .

关于java - BufferedImage.getScaledInstance() 不调整图像大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43733011/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com