![](/img/trans.png)
[英]Why am I getting "`OSError: unknown file format`" when opening a TTF with `PIL.ImageFont`?
[英]PIL: OSError: Unknown File Format
尝试使用 Stack Overflow 上其他问题中的一段代码。 遇到这段代码:
from PIL import ImageFont
from urllib.request import urlopen
truetype_url = 'https://github.com/googlefonts/roboto/blob/main/src/hinted/Roboto-Black.ttf'
font = ImageFont.truetype(urlopen(truetype_url), size=10)
我收到了这个错误:
OSError: unknown file format
我尝试了其他建议,例如使用 requests.get 重新安装 PIL,但我收到了同样的错误。 我检查了链接,它确实将您带到了有问题的项目。 还有其他建议我可以尝试吗?
我的目标:能够从链接中获取字体,这样我就不必在我的计算机上本地执行此操作。
谢谢!
你可以这样做:
from PIL import Image, ImageFont, ImageDraw
import requests
import io
# Load font from URI
truetype_url = 'https://github.com/googlefonts/roboto/blob/main/src/hinted/Roboto-Black.ttf?raw=true'
r = requests.get(truetype_url, allow_redirects=True)
font = ImageFont.truetype(io.BytesIO(r.content), size=24)
# Create a black canvas and get drawing context
canvas = Image.new('RGB', (300,180))
draw = ImageDraw.Draw(canvas)
# Write in our font
draw.text((10, 10), "Got that crazy font", font=font, fill=(255,255,255))
canvas.save('result.png')
正如 Karl 在评论中指出的那样,您可以使用urllib
来执行此操作,就像您最初打算这样:
from urllib.request import urlopen
truetype_url = 'https://github.com/googlefonts/roboto/blob/main/src/hinted/Roboto-Black.ttf?raw=true'
font = ImageFont.truetype(urlopen(truetype_url), size=10)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.