我在理解这一行代码时遇到了一些问题:
bufferedImage.getScaledInstance(100, -1, Image.SCALE_SMOOTH);
我用它来调整图像的大小,用下面的数字。宽度:3264,高度:2448,水平和垂直分辨率:150 size,尺寸: 2.72MB。
然后使用以下方法将bufferedImage保存到文件中
ImageIO.write(bufferedImage, "jpg", outputFile);
它产生了一幅具有以下数字的图片:相同的宽度和高度(3264x2448),水平和垂直分辨率:96 the,大小:674 in。
图片是不是应该是100px
的宽度,以及保持高宽比的任何高度(根据Javadoc)?为什么结果图片有相同的宽度和高度,但不同的颜色和分辨率,大小?我是不是遗漏了什么,因为不管宽度和高度有多大,结果图总是和上面描述的一样。
我还读到应该将调整大小的BufferedImage
绘制成Graphics2D
,并将Graphics2D
保存到文件中。这是正确的方法吗,而不是直接将BufferedImage
保存到文件中?
我使用的图像是这里
发布于 2017-05-03 02:02:41
您没有得到.getScaledInstance()
的响应。它不修改bufferedImage
,而是返回缩放的映像实例。由于使用了"jpg“,您可能会得到输出图像的分辨率变化。
所以你必须做以下几件事
Image scaledImage = bufferedImage.getScaledInstance(100, -1, Image.SCALE_SMOOTH);
// map Image to BufferedImage
ImageIO.write(scaledBufferedImage, "jpg", outputFile);
若要从缩放的BufferedImage
创建Image
,请使用以下回答。
https://stackoverflow.com/questions/43733011
复制相似问题