阿里 SimpleImage 文字水印 空指针异常

FontManager.getFont("方正黑体");这个方法返回值为null

这个我是测试给图片添加文字水印的时候测试发现的 ,空指针,原因是创建FootnoteDrawTextItem对象时没有指定字体,而源码使用的是默认字体FontManager.getFont("方正黑体"); 这个返回的是空,又去看了FontManager源码,发现cache这个没有是个空map 然后有个 静态块,感觉是这里加载的,但是没有写实现
大概看了下FontManager这块的源码,
com.alibaba.simpleimage.SimpleImageException: java.lang.NullPointerException
at com.alibaba.simpleimage.render.WriteRender.render(WriteRender.java:218)
at com.mljr.carrier.test.SimpleImageDemo.doDrawImageText(SimpleImageDemo.java:326)
at com.mljr.carrier.test.SimpleImageDemo.testFootnoteDrawTextItem(SimpleImageDemo.java:291)
at com.mljr.carrier.test.SimpleImageDemo.main(SimpleImageDemo.java:297)
Caused by: java.lang.NullPointerException
at com.alibaba.simpleimage.render.FootnoteDrawTextItem.drawText(FootnoteDrawTextItem.java:110)
at com.alibaba.simpleimage.util.ImageDrawHelper.drawText(ImageDrawHelper.java:54)
at com.alibaba.simpleimage.render.DrawTextRender.render(DrawTextRender.java:80)
at com.alibaba.simpleimage.render.WriteRender.render(WriteRender.java:213)


暂时解决办法:构建CornerDrawTextItem,FixDrawTextItem,FootnoteDrawTextItem实体是使用全参数构建,因为如果不传字体默认使用的是FontManager.getFont,这个方法汇报空           FixDrawTextItem类:105行 Font font = defaultFont.deriveFont(fsize); defaultFont 空了

static File        path              = new File("C:\\tempDir");
static File        rpath             = new File("C:\\tempDir");
static final Color FONT_COLOR        = new Color(255, 255, 255, 115);
static final Color FONT_SHADOW_COLOR = new Color(170, 170, 170, 77);
static final Font  FONT              = new Font("黑体", Font.PLAIN, 10);
static final float TEXT_WIDTH_PERCENT        = 0.6F;
static final int   MIN_FONT_SIZE             = 6;

解决办法:全量构建实体

CornerDrawTextItem item1 = new CornerDrawTextItem("测试水印",FONT_COLOR,FONT_SHADOW_COLOR,FONT,MIN_FONT_SIZE,TEXT_WIDTH_PERCENT);

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值