【问题标题】:How I can load a font file with PIL.ImageFont.truetype in replit如何在 replit 中使用 PIL.ImageFont.truetype 加载字体文件
【发布时间】: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

我应该如何纠正这个问题?

【问题讨论】:

    标签: discord.py python-imaging-library


    【解决方案1】:

    我不知道discordreplit,但假设问题是您无法上传二进制字体文件。

    如果是这样,您有几个选择:

    • 在某处在线找到您想要的字体并使用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)
    

    【讨论】:

    • 感谢战利品!第一个选项很有效
    猜你喜欢
    • 2014-08-16
    • 2011-02-11
    • 2011-04-10
    • 2019-03-19
    • 1970-01-01
    • 2010-10-04
    • 2020-08-12
    • 2021-09-10
    • 1970-01-01
    相关资源
    最近更新 更多