2011-04-21 147 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