Java AWT 文本产生工件
Java AWT text produces artifacts
我正在尝试在一些纯色背景上绘制一些文本,但文本周围出现了一些瑕疵。有没有办法让写作变得干净?
final BufferedImage image = new BufferedImage(400, 400,
BufferedImage.TYPE_INT_RGB);
Graphics2D g2d = (Graphics2D) image.getGraphics();
g2d.setColor(Color.BLUE);
g2d.fillRect(0,0, image.getWidth(), image.getHeight());
Font font = new Font ("Verdana", Font.PLAIN, 40);
AffineTransform affinetransform = new AffineTransform();
FontRenderContext frc = new FontRenderContext(affinetransform, true, true);
TextLayout layout = new TextLayout("Hello World!", font, frc);
g2d.setColor(Color.WHITE);
layout.draw(g2d, 100, 100);
ImageIO.write(image, "jpg", new File("testDirtyText.jpg"));
它正在生成一些工件,如下所示:
任何关于此任何其他方面的建议也将不胜感激。
谢谢!
我不太确定您指的是锯齿现象还是 JPEG 压缩现象。要修复前者,请添加:
g2d.setRenderingHint(
RenderingHints.KEY_TEXT_ANTIALIASING,
RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
有关更多渲染选项,请参阅 https://docs.oracle.com/javase/8/docs/api/java/awt/RenderingHints.html。
要修复后者,请另存为 PNG:
ImageIO.write(image, "png", new File("test.png"));
或者如果您确实需要 JPEG,请参阅this Q&A关于设置 JPEG 质量级别。
我正在尝试在一些纯色背景上绘制一些文本,但文本周围出现了一些瑕疵。有没有办法让写作变得干净?
final BufferedImage image = new BufferedImage(400, 400,
BufferedImage.TYPE_INT_RGB);
Graphics2D g2d = (Graphics2D) image.getGraphics();
g2d.setColor(Color.BLUE);
g2d.fillRect(0,0, image.getWidth(), image.getHeight());
Font font = new Font ("Verdana", Font.PLAIN, 40);
AffineTransform affinetransform = new AffineTransform();
FontRenderContext frc = new FontRenderContext(affinetransform, true, true);
TextLayout layout = new TextLayout("Hello World!", font, frc);
g2d.setColor(Color.WHITE);
layout.draw(g2d, 100, 100);
ImageIO.write(image, "jpg", new File("testDirtyText.jpg"));
它正在生成一些工件,如下所示:
任何关于此任何其他方面的建议也将不胜感激。
谢谢!
我不太确定您指的是锯齿现象还是 JPEG 压缩现象。要修复前者,请添加:
g2d.setRenderingHint(
RenderingHints.KEY_TEXT_ANTIALIASING,
RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
有关更多渲染选项,请参阅 https://docs.oracle.com/javase/8/docs/api/java/awt/RenderingHints.html。
要修复后者,请另存为 PNG:
ImageIO.write(image, "png", new File("test.png"));
或者如果您确实需要 JPEG,请参阅this Q&A关于设置 JPEG 质量级别。