gpt4 book ai didi

Java2D : scaling issues

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:38:01 27 4
gpt4 key购买 nike

我是一名相当有经验的 Java 程序员,但对 Java2D 还比较陌生。我正在尝试缩放图像,但得到的结果质量很差。该图像是面板的预览,因此包含文本和文本字段之类的内容。我将始终缩小规模,永远不会扩大规模。

目前我正在使用以下代码:-

g.drawImage(panelImage, 0, 0, scaledWidth, scaledHeight, null);

其中 panelImage 是全尺寸预览 (BufferedImage),scaledWidth 和 scaledHeight 是各自的目标尺寸。我似乎在文本字段等内容的文本和边缘丢失了很多细节。

我应该使用更好的调用来缩放图像吗?

谢谢,约翰

最佳答案

我可以提出的一个建议是先将图像调整到一个单独的 BufferedImage 上。 .原因是,Graphics2D可以获得 BufferedImage 的对象,以生成质量更好的缩放图像。

Graphics2D 可以接受“渲染提示”,指示 Graphics2D 对象执行图像处理的方式。 setRenderingHint方法是可用于设置这些渲染提示的方法之一。来自 RenderingHints 的渲染提示可以使用类。

然后,使用那个 Graphics2D 对象,可以使用前面指定的呈现提示将图像绘制到 BufferedImage

粗略的(未经测试的)代码如下所示:

BufferedImage scaledImage = new BufferedImage(
scaledWidth,
scaledHeight,
BufferedImage.TYPE_INT_RGB
);

Graphics2D g = scaledImage.createGraphics();
g.setRenderingHints(
RenderingHints.Key.KEY_INTERPOLATION,
RenderingHints.VALUE_INTERPOLATION_BICUBIC
);

g.drawImage(panelImage, 0, 0, scaledWidth, scaledHeight, null);
g.dispose();

其他感兴趣的呈现提示可能包括:

Controlling Rendering Quality Java 教程部分还提供了有关如何控制 Graphics2D 对象的渲染质量的更多信息。

关于一般处理图形界面的非常好的信息来源,Filthy Rich Clients强烈推荐 Chet Haase 和 Romain Guy 的著作。书中有一节处理缩放图像的问题,这似乎很相关。

关于Java2D : scaling issues,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/932479/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com