我正在尝试从base64编码的字符串中加载Pil中的真实字体, 使用此代码:
import base64
from PIL import ImageFont
from io import BytesIO
TTF = "T1RUTwAJAIAAAwAQQ0ZGIGkSYyMAAACcAA" # ...this is obviously only part of the string representing a base64 encoded ttf file
fontub = ImageFont.ImageFont()
fontub._load_pilfont_data(BytesIO(base64.b64decode(TTF)),None)
但是我收到了这个错误:
SyntaxError:不是PILfont文件
我希望将我的项目中的所有字体/图像包含在resource.py文件中作为base64编码的字符串资源。我已经用所有图标和图像完成了它,但我无法找到一种方法来使用字体有没有办法做到这一点?
PS:我使用的是python 3.4.4 / windows 10和Pillow 3.4.2,我使用notepad ++来编码ttf文件。
答案 0 :(得分:1)
在我的评论中,_load_pilfont_data
函数加载PILFont数据(而不是TTF字体文件的数据),因此如果您尝试使用该函数加载TTF字体 - 您将获得一个SyntaxError(因为它不是PILfont文件。)
您可以做的是 - 使用truetype
模块的ImageFont
功能:
import base64
from PIL import ImageFont
from io import BytesIO
TTF = "T1RUTwAJAIAAAwAQQ0ZGIGkSYyMAAACcAA"
fontub = ImageFont.truetype(BytesIO(base64.b64decode(TTF)))
在documentation中说你应该提供文件的路径,但似乎BytesIO
也可以。