在 PIL 中导入 base64 编码的字体
importing base64 encoded fonts in PIL
我正在尝试从 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: Not a PILfont file
我想将我项目中的所有 font/images 作为 base64 编码字符串资源包含在 resource.py 文件中。我已经用所有的图标和图像做到了,但是我找不到用字体的方法有什么办法吗?
PS:我正在使用 python 3.4.4/windows 10 和 Pillow 3.4.2,我正在使用 notepad++ 对 ttf 文件进行编码。
如我的评论所述,_load_pilfont_data
函数加载 PILFont 数据(而不是 TTF 字体文件的数据),因此如果您尝试使用该函数加载 TTF 字体 - 您将获得SyntaxError(因为它不是 PILfont 文件)。
您可以做的 - 是使用 ImageFont
模块的 truetype
功能:
import base64
from PIL import ImageFont
from io import BytesIO
TTF = "T1RUTwAJAIAAAwAQQ0ZGIGkSYyMAAACcAA"
fontub = ImageFont.truetype(BytesIO(base64.b64decode(TTF)))
在 documentation 中说您应该提供文件的路径,但似乎 BytesIO
也可以。
我正在尝试从 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: Not a PILfont file
我想将我项目中的所有 font/images 作为 base64 编码字符串资源包含在 resource.py 文件中。我已经用所有的图标和图像做到了,但是我找不到用字体的方法有什么办法吗?
PS:我正在使用 python 3.4.4/windows 10 和 Pillow 3.4.2,我正在使用 notepad++ 对 ttf 文件进行编码。
如我的评论所述,_load_pilfont_data
函数加载 PILFont 数据(而不是 TTF 字体文件的数据),因此如果您尝试使用该函数加载 TTF 字体 - 您将获得SyntaxError(因为它不是 PILfont 文件)。
您可以做的 - 是使用 ImageFont
模块的 truetype
功能:
import base64
from PIL import ImageFont
from io import BytesIO
TTF = "T1RUTwAJAIAAAwAQQ0ZGIGkSYyMAAACcAA"
fontub = ImageFont.truetype(BytesIO(base64.b64decode(TTF)))
在 documentation 中说您应该提供文件的路径,但似乎 BytesIO
也可以。