Java绘制文字质量太低的解决方案?
阿神
阿神 2017-04-18 09:41:07
[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);
    }
阿神
阿神

闭关修行中......

全部回复(1)
天蓬老师

能贴出代码吗?照理来说应该不会啊,即使没有边缘优化,也不至于这样模糊,图片有没有进行缩放?有没有使用点阵字体?

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

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号