计算文字适合的宽度!

Image srcImg = null;

        try {
            srcImg = ImageIO.read(inputStream);
        } catch (IOException e) {
            log.info("occur getGraphics2D fail",e);
            throw  new ImageException(ResponseCode.GEN_IMAGE_ERROR,e);
        }
 BufferedImage  buffImg = new BufferedImage(srcImg.getWidth(null),
                srcImg.getHeight(null), BufferedImage.TYPE_INT_RGB); 
 Graphics2D g2 = imageRender.getGraphics2D() ; //
 Font font = new Font(fontFamily,fontWeight,fontSize());//字体
 g2.setFont(font);
 FontMetrics fm = g2.getFontMetrics();//
 int totalWidth = buffImg().getWidth()//图片的宽度
 int fontLength = getBestFontNumber(totalWidth,fm,g2,itemName,itemName.length());

 private int getBestFontNumber(int totalWidth,FontMetrics fm, Graphics2D g2, String text,int length){

        Rectangle2D rc = fm.getStringBounds(text.substring(0,length), g2);
        double itemNameWidth =   rc.getWidth();//计算出文字的宽度
        //比文字宽度要长
        //30 图片左侧的留白   
        if(totalWidth - itemNameWidth < 30  ){//行宽不足容纳下文字则减少文字长度再计算
            length--;
            return getBestFontNumber(totalWidth, fm, g2, text, length);
        }
        return length;
    }

 

转载于:https://my.oschina.net/guansheng/blog/688315

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值