AttributeError: 'str' object has no attribute 'rotate'

AttributeError: 'str' object has no attribute 'rotate'

我在文字上创建图像, 需要360度旋转, 得到这个错误, 请帮帮我

from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont, ImageOps

img = Image.open('cupcake toppe.png')


I1 = ImageDraw.Draw(img)


myFont2 = ImageFont.truetype('arial.ttf', 15)


text2 = "3345"

img1 = text2.rotate(17.5,  expand=1)

I1.text((50, 15), text2, img1, font=myFont2, fill=(0, 0, 0))

img.show()

我知道这个方法,希望对你有帮助:

我们将绘制的文本及其字体:

label = 'Hello'
font = ImageFont.truetype('arial.ttf', 36)

为方便起见,我们将固定线的高度,因为 Pillow 根据文本更改它,这可能会干扰旋转。特别是文字A的高度是33 pixels,而文字q的高度已经是40 pixels,因为棍子往下粘。为了获得适合任何字母的整个字符串的准确高度,出于某种原因,我们将使用未记录的 getmetrics 方法:

line_height = sum(font.getmetrics())  # 33 + 8 = 41

现在我们将在单独的干净图像上绘制文本。在这里我们将应用一个小技巧:图片将呈灰色阴影并表示 alpha 通道。黑色 (0) — 完全透明,白色 (255) — 完全不透明。为了使图像成为文本的大小,我们将使用 getsize 方法获取其宽度,并从常量 line_height.

中获取高度
fontimage = Image.new('L', (font.getsize(label)[0], line_height))
ImageDraw.Draw(fontimage).text((0, 0), label, fill=255, font=font)

现在让我们扭转局面。我们需要添加 expand=True 来增加图像的大小,以便旋转的文本适合。

fontimage = fontimage.rotate(80, resample=Image.BICUBIC, expand=True)

现在,我们将图像叠加在原件上

orig = Image.open('original.png')
orig.paste((255, 0, 0), box=(0, 0), mask=fontimage)

第一个参数指定我们正在应用的图像。相反,您可以指定颜色,我就是这样做的:这是 RGB,代表红色。

给他一个有两个元素的元组时的第二个参数表示要插入图片的地方。