Java给图片添加水印部署到服务器出现中文乱码

问题:使用java.awt包的Graphics2D进行操作,对每次上传的图片流都操作一次。在本地windows环境测试的非常流畅,字体的各种形式也能完整显示,但是部署到linux服务器上就会出现中文字体变成口口口形式

原因:linux服务器器本身不带中文字体,或者说是没有字体的

解决:给linux服务器安装字体库

 

1. 查看服务器的字体库

如果没有安装字体库会出现:

如果已经安装字体库:

 

 

2. 安装字体库

输入命令:

yum -y install fontconfig

如果安装成功会提示:

 这时我们可以输入命令:

 cd /usr/share

输入命令:

ls

可以看到在/usr/share目录下有fonts和fontconfig目录了:

3. 安装中文字体库

在linux服务器中我们字体的存放路径是上图中fonts目录,我们需要做的就是将中文字体放到该目录下。

首先在windows系统下打开c盘,进入Windows/Fonts目录:

找到需要的字体,根据个人习惯copy到自己喜欢的位置

然后我们输入命令:

cd /usr/share/fonts

进入到fonts目录下,输入mkdir chinese创建目录:

mkdir chinese

进入chinese目录:

cd chinese

将copy下来的字体放入该目录下,可以利用rz命令存入,也可以使用xftp工具上传

 

4. 权限命令操作

修改chinese目录的权限:

chmod -R 755 /usr/share/fonts/chinese

接下来需要安装ttmkfdir来搜索目录中所有的字体信息,并汇总生成fonts.scale文件,输入命令:

yum -y install ttmkfdir

当看到下图的提示信息时说明已安装成功:

当然,已经安装过的就不需要输入了

然后执行ttmkfdir命令即可:

ttmkfdir -e /usr/share/X11/fonts/encodings/encodings.dir

最后一步就是修改字体配置文件了,首先通过编辑器打开配置文件:

vi /etc/fonts/fonts.conf

可以看到一个Font list,即字体列表,在这里需要把我们添加的中文字体位置加进去:

  <dir>/usr/share/fonts/chinese</dir>

然后输入:wq保存退出,最后别忘了刷新内存中的字体缓存,这样就不用reboot重启了:

fc-cache

最后再次通过fc-list看一下字体列表:

 

 

假如水印如有生僻字显示不出来参考如下方法:

1)在$JAVA_HOME/jre/lib/fonts下新建一个fallback目录,让Java程序渲染生僻字时在fallback里面找。(JAVA_HOME是你jdk安装的目录)

2)把windows/fonts/simsun.ttc拷贝到fallback去

 

posted @ 2021-01-04 12:01  八块腹肌的青书  阅读(2712)  评论(0编辑  收藏  举报
Live2D