前言

最近有个小功能,我看来十分容易,无非就是往图片上添加个文字,但是,在服务器上,瞬间爆炸,所有的中文,都变成一个个的框框,我走了很多弯路,踩了很多坑,在这里记录一下,希望能帮助到同样遇到这个问题的人。

问题描述

代码

from PIL import Image, ImageDraw, ImageFont
 
image= Image.new('RGB', (559, 320),(255,255,255))
draw = ImageDraw.Draw(image)
 
# draw.text()
font = ImageFont.truetype("arial", 40, encoding="unic") # 设置字体
draw.text((100, 50), "哈哈哈", 'black', font)
# del draw
image.show()

解决办法

我踩了很多的坑,发现有一种及其简易的方式来解决这个问题

修改字体为simsun.ttc即可,听着简单,但是,假如身处服务器,根本没有这个字体,你需要从windows下copy过去

  1. 打开”C:\Windows\WinSxS\amd64_microsoft-windows-font-truetype-simsun_31bf3856ad364e35_10.0.18362.1_none_cd668f05ece74044

    名字可能会不同,可以搜索simsun.ttc

  2. 通过连接服务器,传到服务器的 /usr/share/fonts文件夹下,如果没有就自己建一个

  3. 在此目录下,执行#fc-cache -fv,扫描字体目录并生成字体信息的缓存,然后应用程序就可以”立即”使用这些新安装的字体

  4. 然后重启你的服务器

  5. 按照相对路径或者绝对路径来进行使用即可。

效果