在图像上绘制文本
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。
我正在尝试在 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。