首页 > Java绘制文字质量太低的解决方案?

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

这样设置后就可以了,不会出现模糊的情况。

【热门文章】
【热门文章】