Java绘制文字质量太低的解决方案?
使用Graphics2D
绘图结果如下:
文字周边非常模糊。想要效果是:
请问如何使用java实现这种清晰的绘制文字的效果呢?
更新
代码如下:
public static void pressText(String targetImg, String pressText, String fontName, int fontStyle, int fontSize, Color color) { try {
File file = new File(targetImg);
Image image = ImageIO.read(file);
int width = image.getWidth(null);
int height = image.getHeight(null);
BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics2D g = bufferedImage.createGraphics();
g.setFont(new Font(fontName, fontStyle, fontSize));
g.drawImage(image, 0, 0, width, height, null);
g.setColor(color);
g.drawString(pressText, 50, 100);
g.dispose();
ImageIO.write(bufferedImage, "jpg", file);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws IOException {
pressText("e://test//test1.jpg", "测试", "华文细黑", Font.PLAIN, 30, Color.RED);
}
回答:
能贴出代码吗?照理来说应该不会啊,即使没有边缘优化,也不至于这样模糊,图片有没有进行缩放?有没有使用点阵字体?
g2d.setRenderingHint(SunHints.KEY_ANTIALIASING, SunHints.VALUE_ANTIALIAS_OFF); g2d.setRenderingHint(SunHints.KEY_TEXT_ANTIALIASING, SunHints.VALUE_TEXT_ANTIALIAS_DEFAULT);
g2d.setRenderingHint(SunHints.KEY_STROKE_CONTROL, SunHints.VALUE_STROKE_DEFAULT);
g2d.setRenderingHint(SunHints.KEY_TEXT_ANTIALIAS_LCD_CONTRAST, 140);
g2d.setRenderingHint(SunHints.KEY_FRACTIONALMETRICS, SunHints.VALUE_FRACTIONALMETRICS_OFF);
g2d.setRenderingHint(SunHints.KEY_RENDERING, SunHints.VALUE_RENDER_DEFAULT);
这样设置后就可以了,不会出现模糊的情况。
回答:
你把图片格式改成png就好了,jpg不适合做文字绘制。
以上是 Java绘制文字质量太低的解决方案? 的全部内容, 来源链接: utcz.com/p/176409.html