Graphics2D绘制汉字时显示乱码问题

432 阅读9分钟

         Graphics2D ,Graphics 类,提供了对几何形状、坐标转换、颜色管理和文本布局更为复杂的控制。它是用于在 Java(tm) 平台上呈现二维形状、文本和图像的基础类。验证码生成可以用到此类。 public abstract class Graphics2Dextends Graphics 此 Graphics2D 类扩展了 Graphics 类,提供了对几何形状、坐标转换、颜色管理和文本布局更为复杂的控制。

1 问题描述

项目开发中碰到一个问题,就是需要绘制一个汉字+logo+二维码的的图片,所以使用了Graphics2D,在本地win10上面运行一起良好,但是在线上环境部署时出现汉字无法正常显示的问题,如下图所示

2 解决方案

当时想到的是文字编码问题,结果尝试了几种编码都解决不了。后来想到是不是线上环境字体缺失,最后查看了显示环境系统(centos7),绘制的‘宋体’在系统中找不到,于是就开始安装字体。

2-1 安装字体索引工具

yum install -y mkfontscale
yum install -y fontconfig

2-2 centos系统创建字体目录

mkdir -p /usr/share/fonts/chinese

2-3 拷贝win10系统字体到centos

win10系统字体目录在C:\Windows\Fonts下面,找到相应字体,拷贝一份出来,然后修改后缀名称为.ttf,最后上传到上一步创建的字体目录下面

2-4 安装字体

cd /usr/share/fonts/chinese
mkfontscale

mkfontdir

fc-cache

2-5 测试

安装完成之后,重新生成图片,样式如下:

原先显示的方块现在已经正常显示文字了。

点击这里免费获取编程资源