如何使用 python 的 PIL 以一定角度绘制文本?

新手上路,请多包涵

使用 Python 我希望能够使用 PIL 以不同的角度绘制文本。

例如,假设您正在钟面上画数字。数字 3 会按预期显示,而我们绘制的 12 会逆时针旋转 90 度。

因此,我需要能够从许多不同的角度画出许多不同的弦。

原文由 carrier 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 967
2 个回答

将文本绘制到临时空白图像中,旋转它,然后将其粘贴到原始图像上。您可以将这些步骤封装在一个函数中。祝你好运找出要使用的确切坐标 - 我的冷雾大脑现在不适合它。

这个演示在图像上倾斜写黄色文本:

 # Demo to add rotated text to an image using PIL

import Image
import ImageFont, ImageDraw, ImageOps

im=Image.open("stormy100.jpg")

f = ImageFont.load_default()
txt=Image.new('L', (500,50))
d = ImageDraw.Draw(txt)
d.text( (0, 0), "Someplace Near Boulder",  font=f, fill=255)
w=txt.rotate(17.5,  expand=1)

im.paste( ImageOps.colorize(w, (0,0,0), (255,255,84)), (242,60),  w)

原文由 DarenW 发布,翻译遵循 CC BY-SA 2.5 许可协议

在创建 Image 对象之前了解文本的像素大小也很有用。我在绘制图形时使用了这样的代码。然后我没有遇到任何问题,例如数据标签的对齐(图像与文本完全一样大)。

 (...)
img_main = Image.new("RGB", (200, 200))
font = ImageFont.load_default()

# Text to be rotated...
rotate_text = u'This text should be rotated.'

# Image for text to be rotated
img_txt = Image.new('L', font.getsize(rotate_text))
draw_txt = ImageDraw.Draw(img_txt)
draw_txt.text((0,0), rotate_text, font=font, fill=255)
t = img_value_axis.rotate(90, expand=1)

将两个图像连接在一起的其余部分已在此页面上进行了描述。当你旋转一个“不规则”的角度时,你必须稍微改进一下这段代码。它实际上适用于 90、180、270…

原文由 [](https://stackoverflow.com/questions/245447/how-do-i-draw-text-at-an-angle-using-pythons-pil/741592#741592) 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题