3 回答
TA贡献1735条经验 获得超5个赞
您应该能够下载字体的内容,requests然后用它们制作一个类似文件的对象,以代替文件名BytesIO传递给:ImageFont.truetype()
#!/usr/bin/env python3
from PIL import Image, ImageFont, ImageDraw
import requests
import io
# Load font from URI
r = requests.get('https://github.com/ProgrammingFonts/ProgrammingFonts/raw/master/Droid-Sans-Mono/droid-sans-mono-1.00/Droid%20Sans%20Mono.ttf', allow_redirects=True)
font = ImageFont.truetype(io.BytesIO(r.content), size=24)
# Create a black canvas and get drawing context
canvas = Image.new('RGB', (400,200))
draw = ImageDraw.Draw(canvas)
# Write in our font
draw.text((10, 10), "Hello, nice to meet you.", font=font, fill=(255,255,255))
canvas.save('result.png')
我无法为您的字体计算出正确的 URL,所以我使用了一个随机的、不同的 URL。
TA贡献1810条经验 获得超4个赞
ImageFont.true_type
接受一个类似文件的对象。
Python 的标准库,urllib.request.urlopen
返回一个类似文件的对象。
以下应该有效:
from pillow import ImageFont
from urllib.request import urlopen
truetype_url = 'https://github.com/googlefonts/roboto/blob/master/src/hinted/Roboto-Regular.ttf?raw=true'
font = ImageFont.truetype(urlopen(truetype_url), size=10)
要使那个特定的 url 工作,你需要添加?raw=true到最后。
添加回答
举报