python PIL-chops顶部绘图.tex

2024-10-03 02:38:39 发布

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

我用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)。 帮助plz:)


Tags: the代码text文本httpsizepilfill
1条回答
网友
1楼 · 发布于 2024-10-03 02:38:39

我设法解决了这个问题。drawtext在某些字体大小上似乎存在一些问题。 我做了一些实验,在这里可以清楚地看到某些字体大小的顶端被切掉了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的开发人员来解决。在

相关问题 更多 >