3 回答

TA貢獻1735條經(jīng)驗 獲得超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條經(jīng)驗 獲得超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到最后。
添加回答
舉報