记一次Java在Linux上绘制带中文的图片时乱码的情况

前言:前面做服务器迁移的时候,没注意服务中有使用文本绘制图片的业务,结果最近调试某个功能的时候随手点击试了一下,结果发现使用中文字符串的时候绘制的图片全是乱码方块,这里记录一下如何处理该问题以便查阅

这种情况都是因为Linux上面没有该字体的原因导致的,因此我们只需要将需要的字体上传或安装到相应的位置即可!

问题中需要的字体文件下载地址:simsun.ttc字体下载如果不放心,可在Windows系统中C:\Windows\Fonts目录下找到对应字体上传即可!

1、如果Linux上面使用的是压缩版的JDK环境

在JDK解压目录下找到fonts文件夹,将下载或找到的字体文件上传上去,重启Java程序即可

image-20220214162511714

上传后的文件:

image-20220214162706447

重启Java程序即可

2、如果Linux上面使用的是yum安装的JDK环境

找到yum 安装的JDK环境

1
2
3
4
5
6
7
# 输入以下命令
$ ls -l /etc/alternatives/java

# 得到如下信息
lrwxrwxrwx 1 jiang root 73 Nov 17 17:54 /etc/alternatives/java -> /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.312.b07-1.el7_9.x86_64/jre/bin/java

## /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.312.b07-1.el7_9.x86_64 就是JDK安装目录

可能在 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.312.b07-1.el7_9.x86_64/jre/lib地址下没有fonts文件夹,手动创建后上传即可

该地址下没有fonts文件夹:

image-20220214163200105

上传后的文件结构:

image-20220214163750491

3、直接使用Linux的字体管理工具

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 查看所有字体命令:

$ fc-list

# 查看中文字体命令:
$ fc-list :lang=zh

## 如果返回的是没有任何信息,说明没有安装字体管理,需要安装字体库

# 安装字体库管理
$ yum -y install fontconfig

# 把下载的字体上传到/usr/share/fonts文件夹中

# 再次查看中文字体命令:
$ fc-list :lang=zh

# 得到如果回显
/usr/share/fonts/simsun.ttc: NSimSun:style=Regular
/usr/share/fonts/simsun.ttc: SimSun:style=Regular

重新启动Java相关程序即可