如何在 replit 中使用 PIL.ImageFont.truetype 加载字体文件
Posted
技术标签:
【中文标题】如何在 replit 中使用 PIL.ImageFont.truetype 加载字体文件【英文标题】:How I can load a font file with PIL.ImageFont.truetype in replit 【发布时间】:2021-11-08 23:36:23 【问题描述】:我正在尝试在 discord.py 中制作这张欢迎卡,目前我正在 replit.com 上运行我的机器人。
font = ImageFont.truetype("arial.ttf", 28)
我有一些示例,只要我在我的 PC 上运行它就可以很好地工作,但是当我访问 replit.com 时,它给出了错误提示
Command raised an exception: OSError: cannot open resource
我应该如何纠正这个问题?
【问题讨论】:
【参考方案1】:我不知道discord
或replit
,但假设问题是您无法上传二进制字体文件。
如果是这样,您有几个选择:
在某处在线找到您想要的字体并使用requests.get(URL)
在replit
上的代码中获取它,或者
在您的代码中创建一个 base64 变量并对其进行解码
第一个选项覆盖here。
让我们看看第二个。假设您的字体在您的 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)
【讨论】:
感谢战利品!第一个选项很有效以上是关于如何在 replit 中使用 PIL.ImageFont.truetype 加载字体文件的主要内容,如果未能解决你的问题,请参考以下文章
使用 REPLIT 创建我的第一个机器人但总是错误 Discord.JS [重复]