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去