使用Python我希望能够使用PIL以不同的角度绘制文本.
例如,假设您正在绘制时钟周围的数字.数字3将按预期显示,而12我们将逆时针旋转90度.
因此,我需要能够在许多不同的角度绘制许多不同的字符串.
将文本绘制到临时空白图像中,旋转它,然后将其粘贴到原始图像上.您可以完成函数中的步骤.祝你好好确定使用的确切坐标 - 我的冷雾大脑现在还不能胜任.
该演示在图像的斜面上写入黄色文本:
# 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)
在创建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 ......