缩放 BufferedImage:深入研究重采样,而不是裁剪
您尝试使用 Graphics2D 类缩放 BufferedImage 可能不会产生所需的结果由于该方法所施加的限制。 scale() 方法只是简单地转换当前图形上下文,而不修改底层图像数据。
AffineTransformOp:重采样的首选解决方案
对于重采样,AffineTransformOp 类提供通过允许您指定插值类型,获得更大的灵活性。插值确定图像缩放时如何计算中间像素值。以下是使用 AffineTransformOp 缩放图像的示例:
BufferedImage before = getBufferedImage(encoded); int w = before.getWidth(); int h = before.getHeight(); BufferedImage after = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB); AffineTransform at = new AffineTransform(); at.scale(2.0, 2.0); AffineTransformOp scaleOp = new AffineTransformOp(at, AffineTransformOp.TYPE_BILINEAR); after = scaleOp.filter(before, after);
在此示例中:
要点
以上是如何在 Java 中正确缩放 BufferedImage:重采样与裁剪?的详细内容。更多信息请关注PHP中文网其他相关文章!