为了账号安全,请及时绑定邮箱和手机立即绑定

是否可以将在线字体文件链接到 PIL ImageFont.truetype()?

是否可以将在线字体文件链接到 PIL ImageFont.truetype()?

开心每一天1111 2022-11-01 16:51:49
而不是在本地下载字体并将其链接到 ImageFont.truetyp() 是这样的:from pillow import ImageFontfont = ImageFont.truetype('Roboto-Regular.ttf', size=10)我可以做这样的事情:from pillow import ImageFontfont = ImageFont.truetype('https://github.com/googlefonts/roboto/blob/master/src/hinted/Roboto-Regular.ttf', size=10)
查看完整描述

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')

//img1.sycdn.imooc.com//6360de52000121d003630138.jpg

我无法为您的字体计算出正确的 URL,所以我使用了一个随机的、不同的 URL。



查看完整回答
反对 回复 2022-11-01
?
慕容森

TA贡献1853条经验 获得超18个赞

只需对@PeterWood 的回答稍作更改即可在 google colab 上进行这项工作:

truetype_url = 'https://github.com/googlefonts/roboto/blob/master/src/hinted/Roboto-Regular.ttf?raw=true'

我需要添加?raw=true到 truetype_url 的末尾


查看完整回答
反对 回复 2022-11-01
?
慕莱坞森

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到最后。


查看完整回答
反对 回复 2022-11-01
  • 3 回答
  • 0 关注
  • 135 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信