2011-04-21 145 views
2

我有背景模板,其中Java程序必须写一些动态文本,如何获得Java g.drawString()高分辨率?

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上编写图像的高分辨率文本?

更新:这里有反锯齿的例子。 enter image description here

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

分辨率取决于您使用的字体和想象中的像素数量。也许你正在寻找反走样? – 2011-04-21 08:49:45

+0

谢谢,我读过文章,然后试过,它不是反锯齿,背景有很高的分辨率,当用drawString()方法写一个文本时,像素数量很少的矩形出现在文本周围,看起来很糟糕。 – 2011-04-21 09:53:11

+1

如果你已经添加了一个样本图片(截图),它会更清楚你的意思。 – 2011-04-21 10:51:27

回答

3

的问题是不是文本的绘制,但该文件的后续保存:如果您使用的JPEG压缩,你会得到compression artifacts,特别是周围尖角喜欢你的文字。

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

+1

替代方法是使用PNG,或将JPEG压缩质量设置为高。设置压缩质量的示例片段位于此处:http://www.hide-n-seak.com/hnsnet/snippets/jpegOutput.html – Spoike 2011-04-22 08:55:10