在图像上绘制文本

Drawing text on an image

我正在尝试在 QR-Code 的图像上写文字,但失败并显示以下消息:

在我看来我有:

Font = ImageFont.truetype("/usr/share/fonts/truetype/ttf-lyx/cmmi10.ttf",14)

imageFile = "Qrcode.png"

in1=Image.open(imageFi1e)

# Convert to RGB mode
if im1.mode != "RGB":
    im1.convert("RGB")

# Drawing the text on the picture
draw = ImageDraw.Draw(im1)
draw.text((0, 0),"Marwa",(55,55,0),font=font)
draw = ImageDraw.Draw(im1)

# Save the image with a new name
im1.save("marked_image.png")

Image.convert 不是就地操作,这意味着它 returns 结果,而不是更改所有者对象(在本例中为 im1)。

那么解决方法很简单。更改

im1.convert("RGB")`

im1 = im1.convert("RGB")`

旁注:错误本身是由于当图像以 L 格式打开时将三通道颜色元组传递给 text 函数引起的,通常称为灰度,它只有单个通道。 text 函数期望颜色参数是 0 到 255 之间的单个参数,并将其视为 TypeError。