我如何在 replit 中加载带有 PIL.ImageFont.truetype 的字体文件
How I can load a font file with PIL.ImageFont.truetype in replit
我正试图在 discord.py 中制作这张欢迎卡,我现在是 运行 我在 replit.com 上的机器人。
font = ImageFont.truetype("arial.ttf", 28)
我得到了一些例子,只要我在我的电脑上 运行 它就很好用,但是当我到达 replit.com 时它给出了错误说
Command raised an exception: OSError: cannot open resource
我应该如何纠正这个问题?
我不知道 discord
或 replit
,但推测问题是您无法上传二进制字体文件。
如果是这样,您有两个选择:
- 在网上的某个地方找到你想要的字体,然后使用
requests.get(URL)
在你的 replit
上的代码中获取它,或者
- 在您的代码中创建一个 base64 变量并对其进行解码
涵盖第一个选项。
我们来看第二个。假设您的字体在您的 PC 上名为 /Fonts/funky.ttf
。现在你想要在 base64 中使用本地 PC 上的命令行工具来完成:
base64 < /Fonts/funky.txt
这将生成一长串字符。复制它,并在您的 Python 代码中添加一个名为 font64
的字符串并将其设置为等于粘贴的字符串,即
font64 = 'PASTED STRING'
现在在您的代码中,您可以将字符串从 base64 转换回二进制,然后将其包装在 BytesIO 中,使其看起来像一个文件并加载它:
import base64
import io
from PIL import ImageFont
font64 = 'PASTED STRING'
# decode from base64 to binary
binary = base64.b64decode(font64)
# wrap in BytesIO to make file-like object
FileLike = io.BytesIO(binary)
# load font
font = ImageFont.truetype(FileLike, 28)
我正试图在 discord.py 中制作这张欢迎卡,我现在是 运行 我在 replit.com 上的机器人。
font = ImageFont.truetype("arial.ttf", 28)
我得到了一些例子,只要我在我的电脑上 运行 它就很好用,但是当我到达 replit.com 时它给出了错误说
Command raised an exception: OSError: cannot open resource
我应该如何纠正这个问题?
我不知道 discord
或 replit
,但推测问题是您无法上传二进制字体文件。
如果是这样,您有两个选择:
- 在网上的某个地方找到你想要的字体,然后使用
requests.get(URL)
在你的replit
上的代码中获取它,或者 - 在您的代码中创建一个 base64 变量并对其进行解码
涵盖第一个选项
我们来看第二个。假设您的字体在您的 PC 上名为 /Fonts/funky.ttf
。现在你想要在 base64 中使用本地 PC 上的命令行工具来完成:
base64 < /Fonts/funky.txt
这将生成一长串字符。复制它,并在您的 Python 代码中添加一个名为 font64
的字符串并将其设置为等于粘贴的字符串,即
font64 = 'PASTED STRING'
现在在您的代码中,您可以将字符串从 base64 转换回二进制,然后将其包装在 BytesIO 中,使其看起来像一个文件并加载它:
import base64
import io
from PIL import ImageFont
font64 = 'PASTED STRING'
# decode from base64 to binary
binary = base64.b64decode(font64)
# wrap in BytesIO to make file-like object
FileLike = io.BytesIO(binary)
# load font
font = ImageFont.truetype(FileLike, 28)