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

      

  • 相关阅读:
    利用GitHub和Hexo打造免费的个人博客 coder
    Android基础——项目的文件结构(二) coder
    25个Android酷炫开源UI框架 coder
    MarkDown使用教程(In Atom) coder
    Android基础——项目的文件结构(一) coder
    25类Android常用开源框架 coder
    Android Activity启动黑/白屏原因与解决方式 coder
    我的window phone 开发第一步
    Entity Framework 4 In Action 读书笔记
    最近在制作一套ASP.NET控件,已初见雏形
  • 原文地址:https://www.cnblogs.com/zeopean/p/7906470.html
Copyright © 2011-2022 走看看