2012-05-09 7 views
1

Je suis en train de faire un captcha en Java mais j'ai du mal à améliorer la qualité du texte que la méthode "drawString" génère au-dessus de mon image.Améliorer les méthodes "drawString" qualité du texte

Exemple de la qualité du texte:

Vous pouvez voir les bords horribles sur le texte.

code 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); 

Exemple de même police utilisée en php, mais ici la qualité est beaucoup mieux avec des bords lisses:

Comment puis-je améliorer la qualité du texte généré par la méthode "drawString" en Java?

Répondre

3

Graphics et Graphics2D fournissent un cadre de conseil de rendu qui vous permet de configurer certaines parties du rendu d'un composant. Utilisez un indice de rendu anti-crénelage:

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

et vous devriez obtenir un texte anti-aliasé sur votre captcha.

http://docs.oracle.com/javase/6/docs/api/java/awt/RenderingHints.html pour référence

+5

Le champ « VALUE_TEXT_ANTIALIAS_DEFAULT » n'a pas résolu le problème, mais le champ « VALUE_TEXT_ANTIALIAS_ON » a résolu le problème - Thx! – Birdman

+0

vous êtes les bienvenus :) – mcfinnigan

+0

"VALUE_TEXT_ANTIALIAS_ON" résolu pour moi – Joqus

Questions connexes