如何获得 Java g.drawString() 高分辨率?
我有后台模板,其中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.
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
问题不在于文本的绘制,而在于随后的文件保存:如果您使用 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.