1

Java でキャプチャを作成中ですが、「drawString」メソッドが画像の上に生成するテキストの品質を向上させるのに問題があります。

テキスト品質の例:

テキストの恐ろしいエッジを実際に見ることができます。

Java コード:

File file = new File("C:\\captcha.png");
File file2 = new File("C:\\captcha2.png");
File fontfile = new File("C:\\xerox.ttf");
BufferedImage bfimage = ImageIO.read(file);
Graphics2D g = bfimage.createGraphics();
Font myfont = Font.createFont(Font.PLAIN, fontfile);
myfont = myfont.deriveFont(50f);
g.setFont(myfont);
g.setColor(Color.black);
AffineTransform att = new AffineTransform();
g.translate(100, 50);
att.rotate(Math.toRadians(15), 100, 50);
g.setTransform(att);
g.drawString("12345", 100, 50);
RenderedImage rimg = bfimage;
ImageIO.write(rimg, "PNG", file2);

PHPで使用されている同じフォントの例ですが、ここでは滑らかなエッジで品質が大幅に向上しています:

Java の「drawString」メソッドによって生成されたテキストの品質を向上させるにはどうすればよいですか?

4

1 に答える 1

3

GraphicsとGraphics2Dは、コンポーネントのレンダリングの一部を構成できるレンダリングヒントフレームワークを提供します。アンチエイリアスレンダリングヒントを使用します。

g2d.setRenderingHint( RenderingHints.KEY_TEXT_ANTIALIASING, 
RenderingHints.VALUE_TEXT_ANTIALIAS_DEFAULT);

キャプチャにアンチエイリアステキストを取得する必要があります。

参照用のhttp://docs.oracle.com/javase/6/docs/api/java/awt/RenderingHints.html

于 2012-05-09T09:15:00.463 に答える