如何获得 Java g.drawString() 高分辨率?

发布于 2024-11-02 09:06:31 字数 514 浏览 1 评论 0原文

我有后台模板,其中java程序必须编写一些动态文本,

BufferedImage image = ImageIO.read(new File("background.jpg"));
Graphics g = image.createGraphics();

g.setFont(new Font("DejaVu Sans",Font.PLAIN,18));
g.drawString("Hello,World!",10,10);

当以这种方式编写时,我在Java编写的文本周围遇到了一些解析问题。

如何用Java在图像上写入高分辨率文本?

更新:这里是抗锯齿的示例。 在此处输入图像描述

g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);

I have background templates where java program must write some dynamic texts,

BufferedImage image = ImageIO.read(new File("background.jpg"));
Graphics g = image.createGraphics();

g.setFont(new Font("DejaVu Sans",Font.PLAIN,18));
g.drawString("Hello,World!",10,10);

When writing in such manner, I have some resolution problems around text that Java wrote.

How to write high resolution text on image by Java?

UPDATE: Here example with anti-aliasing.
enter image description here

g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

千柳 2024-11-09 09:06:31

问题不在于文本的绘制,而在于随后的文件保存:如果您使用 JPEG 压缩,您将得到 压缩伪像,特别是像文本这样的尖角周围。

除了不使用 JPG 之外,没有真正的解决办法。

The problem is not the drawing of the text, but the subsequent saving of the file: If you are using JPEG-compression, you will get compression artifacts, specially around sharp corners like your text.

There is no real way around this, apart from not using JPG.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文