AttributeError:“str”对象没有属性“rotate”

2024-10-01 17:25:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我在文字上创建图像, 需要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()

Tags: from图像imageimportimgpil错误img1
1条回答
网友
1楼 · 发布于 2024-10-01 17:25:31

我知道这种方法,希望能对您有所帮助:

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

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方法获取其宽度,并从恒定的行高度中获取高度

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,代表红色

第二个参数是给他一个包含两个元素的元组,表示图片将插入的位置

相关问题 更多 >

    热门问题