Linux环境下BufferedImage Graphics drawString 乱码解决方法

今天项目在linux服务器上面,登录页的图片验证码显示乱码,本地windows环境正常。

g.setFont(new Font("Candara", Font.BOLD, 24));

写文字进入图片之前必须设置字体

BufferedImage在内存创建的图像调用的是服务器端的字体,所以在生成图片时,

g.drawString("文字内容", 8, 24);

如果服务器端找不到对应的中文字体,那么它就识别不了,最后写入图片的中文就变成了乱码、方框、问号等等了。

解决办法:

第一种方法,添加系统中文字体(宋体):
root@dragon-virtual-machine:~# cd /usr/share/fonts
root@dragon-virtual-machine:/usr/share/fonts# mkdir winFonts
root@dragon-virtual-machine:/usr/share/fonts# cp /home/dragon/Desktop/simsun.ttc winFonts
root@dragon-virtual-machine:/usr/share/fonts# cd winFonts
root@dragon-virtual-machine:/usr/share/fonts/winFonts# mkfontdir
root@dragon-virtual-machine:/usr/share/fonts/winFonts# mkfontscale
第二种方法,添加jre中文字体(宋体):
root@dragon-virtual-machine:~# cd /usr/lib/jvm/java-6-sun/jre/lib/fonts
root@dragon-virtual-machine:/usr/lib/jvm/java-6-sun/jre/lib/fonts# cp /home/dragon/Desktop/simsun.ttc .

windows下直接复制字体文件到jre字体目录:

C:\Program Files\Java\jdk1.8.0_161\jre\lib\fonts

修改完必须重启服务器才有效。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值