zoukankan      html  css  js  c++  java
  • java 文本图片字体模糊优化处理

    昨天发现虽然图片生成字体够清楚了,但是会出现少量锯齿,所以调整了下,代码如下:

    g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);

    -- 以下为旧的

    今天遇到一个很纠结的问题,就是用java 生成的图片字体很是模糊,一开始以为是字体的问题,换了很多字体,例如苹方,思源黑体,这些平时用到的开源字体,无论咋处理,都没效果。

    后面老大看了下,觉得是我的画布又问题,于是添加了一个参数,实例如下:

    g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_HRGB); 

    然后就ok了,具体代码如下

        /**
         * 计算文本高度
         *
         * @param content    文本内容
         * @param font       文本字体
         * @param width      文本的行宽
         * @param lineHeight 文本行高
         */
        public static ContentImgInfo effectiveHeight(String content, Font font, int width, int lineHeight) {
            int imgHeight = 0;
            ContentImgInfo contentImgInfo = new ContentImgInfo();
            try {
                BufferedImage image = new BufferedImage(100, 300, BufferedImage.TYPE_INT_RGB);
                Graphics2D g = image.createGraphics();
                g.setFont(font);
                g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_HRGB);
    
                FontMetrics fm = g.getFontMetrics(font);
    
                // 获取字体高度
                int fontHeight = fm.getHeight() + lineHeight;
    
                // 添加对文字的换行处理
                char firstChar = "中文".charAt(0);
                int charWidth = fm.charWidth(firstChar); // 字符的宽度
                int num = (int) Math.ceil(width / charWidth);
                int lineNum = EffHelper.ceil(content.length(), num) + 1;
                imgHeight = lineNum * fontHeight;
    
                g.dispose();
    
                // 设置文本图片信息
                contentImgInfo.setFontHeight(fontHeight);
                contentImgInfo.setContentImgHeight(imgHeight);
                contentImgInfo.setLineNum(lineNum);
    
    
            } catch (Exception e) {
                
            }
            return contentImgInfo;
        }
    

      

  • 相关阅读:
    深度学习的一些思考
    卷积神经网络CNN
    使用seaborn探索泰坦尼克号上乘客能否获救
    问题记录贴
    相机标定
    docker的--net=host有什么用
    深度学习在3D点云处理中的探索
    python fire使用指南
    ssh配置免密登录及连接远程主机的container
    xavier安装jetpack
  • 原文地址:https://www.cnblogs.com/zeopean/p/7906470.html
Copyright © 2011-2022 走看看