我正在尝试使用PIL在图像上绘制文本。但是,我只能在某些图像上看到文本。许多png无效,例如以下一种:
http://r0k.us/graphics/kodak/kodim16.html
代码示例:
import PIL
from PIL import ImageFont
from PIL import Image
from PIL import ImageDraw
from os.path import expanduser
im1=Image.open(expanduser('~/Desktop/in.png'))
# Drawing the text on the picture
font = ImageFont.truetype('/Library/Fonts/Songti.ttc', 100)
draw = ImageDraw.Draw(im1)
draw.text((50, 600), 'OMG!', fill="#aa0000", font=font)
draw = ImageDraw.Draw(im1)
# Save the image with a new name
im1.save(expanduser('~/Desktop/out.png'))
我尝试添加.convert("RGBA")
并将RGB用作颜色,但无济于事。
该代码适用于从我的iPhone拍摄的照片。但是,当我使用ImageMagick
将这些iPhone照片转换为.jpg或.png时,代码再次停止工作。
此文字绘图功能仅适用于某些图像格式吗?
更新
我在.text()
调用中添加了实际的文本位置。该代码适用于从iPhone提取的.png。
答案 0 :(得分:1)
我认为您刚刚弄错了x
和y
的坐标,并试图将512像素高的图像写入600像素:
#!/usr/bin/env python3
import PIL
from PIL import Image, ImageFont, ImageDraw
im1=Image.open('start.png')
# Drawing the text on the picture
font = ImageFont.truetype('/Library/Fonts/Herculanum.ttf', 100)
draw = ImageDraw.Draw(im1)
draw.text((50, 200), 'OMG!', (255,0,255), font=font)
# Save the image with a new name
im1.save('result.png')