缩放 BufferedImage:综合指南
问题陈述
尝试缩放使用 Java API 的 BufferedImage 时,开发人员遇到了以下代码的不成功结果:
BufferedImage image = MatrixToImageWriter.getBufferedImage(encoded); Graphics2D grph = image.createGraphics(); grph.scale(2.0, 2.0); grph.dispose();
解决方案
虽然使用 Graphics2D 缩放 BufferedImage 的概念。 scale() 可能看起来很简单,但必须注意此操作实际上并不影响底层图像数据。为了实现真正的缩放,有必要使用 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中文网其他相关文章!