docker镜像中,g.drawString字体无法显示的问题解决

当时遇到的问题如下:
1.直接报Null Pointer:FontConfiguaration.getVersion(),
解决方案:原来是镜像中使用的jdk为apline:8,换版本jdk后图像可正常显示 (ringcentral/jdk:latest)

2.更换jdk以后,不报空指针了,但字体为方框无法显示出来,此时引入PingFang_Bold.ttf字体,之前直接放到服务器上还是无法显示,原来要放到镜像中,在Dockfile中,拷贝该字体到镜像的字体文件夹中即可(PingFang_Bold.ttf字体和Dockerfile文件同一个目录下):
COPY PingFang_Bold.ttf /usr/share/fonts/PingFang_Bold.ttf

到此,问题解决!!

引入字体代码:
private Font loadFont(int style, int fontSize) {
try {
File file = ResourceUtils.getFile(“/usr/share/fonts/PingFang_Bold.ttf”);
FileInputStream fis = new FileInputStream(file);
Font dynamicFont = Font.createFont(Font.TRUETYPE_FONT, fis);
Font PingFangBold = dynamicFont.deriveFont(style, fontSize);
fis.close();

        return PingFangBold;

    } catch (Exception e) {
        log.info("【PingFang字体引入失败】{}", e);
        return new Font(“没引入成功的默认返回字体”, style, fontSize);
    }
}

–》 画的时候直接使用即可:
Font font = loadFont(Font.PLAIN, 18);
g.setFont(font );
g.drawString("****", x, y);

你可能感兴趣的:(小笔记)