首页  >  文章  >  Java  >  如何在 Java 中正确缩放 BufferedImage?

如何在 Java 中正确缩放 BufferedImage?

Susan Sarandon
Susan Sarandon原创
2024-11-20 17:02:16324浏览

How Can I Properly Scale a BufferedImage in Java?

缩放 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn