使用灵活插值缩放 BufferedImage
在尝试使用 Java API 调整 BufferedImage 大小时,实现很难产生所需的结果。该代码利用 Graphics2D 类对图像进行缩放变换,但遇到了失败。
分析问题后发现,所提供的解决方案缺乏指定插值类型的功能。 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);
此代码片段演示了如何使用 AffineTransformOp 对图像进行重采样双线性插值,产生更平滑、更准确的结果。
值得注意的是,提供的代码在水平和垂直维度上均匀缩放图像。对于非对称缩放,需要为 AffineTransform 对象中的每个轴指定独立的缩放因子。
以上是如何在Java中通过插值实现灵活的图像缩放?的详细内容。更多信息请关注PHP中文网其他相关文章!