我正在使用 python 和 PIL 来绘制一些文本。我偶然发现了某些教程,因为我需要一些有关如何在特定范围内居中文本的指南:
代码可以工作,但有一些奇怪的行为。它吃掉绳子的顶部。它应该是这样的http://img855.imageshack.us/img855/9292/qttempya4744.png
这是它的样子 http://img546.imageshack.us/img546/8541/outn.jpg
这是我的代码:
import os
from PIL import ImageDraw, ImageFont, Image
def draw_text(text, size, fill=None):
font = ImageFont.truetype('C:\exl.ttf', 30)
size = font.getsize(text)# Returns the width and height of the given text, as a 2-tuple.
size = (size[0],size[1]+15)
im = Image.new('RGBA', size, (0, 0, 0, 0)) # Create a blank image with the given size
draw = ImageDraw.Draw(im)
draw.text((0, 25), text, font=font, fill=fill) #Draw text
return im
img = draw_text('zod', 30, (82, 124, 178))
img.save('C:\out.jpg',"JPEG")
print 'Complete!'
os.startfile('C:\out.jpg')
我对其他字体也有这个错误(尝试过 Arial 和 Verdana)。 请帮助:)
最佳答案
我已经设法解决这个问题。绘制文本似乎在某些字体大小方面存在一些问题。 我做了一些实验,在这里可以清楚地看到某些字体大小的顶部被切掉 http://img838.imageshack.us/img838/7677/pilfontsize.jpg
上述测试代码:
from PIL import ImageDraw, ImageFont, Image
im = Image.new('RGBA', (700, 1600), (0, 0, 0, 0))
fSize = 1
yVal = 1
while fSize <= 50:
font = ImageFont.truetype('arial.ttf', fSize)
fString = "This line is in Arial font size " + str(fSize)
size = font.getsize(fString)
draw = ImageDraw.Draw(im)
draw.text((5, yVal), fString, font=font, fill=None)
fSize += 1
yVal += fSize + 5
无论如何,我成功了,我很自豪:D 这个渲染问题应该由 PIL 开发人员解决。
关于python PIL 砍掉了我的draw.text 的顶部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9367293/