繁体   English   中英

改进“drawString”方法的文本质量

[英]Improve “drawString” methods text quality

我正在使用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”方法生成的文本质量?

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供参考

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM