Python 如何使用枕头包在图像文件上绘制段落

Python 如何使用枕头包在图像文件上绘制段落,python,python-imaging-library,Python,Python Imaging Library,我是枕头包新手,我正在尝试绘制一段文字,该段文字的中心对齐大约有100个单词,但文字超出了图像的范围,我如何管理它,下面是我尝试的代码: 请让我知道 多谢各位 def certgenerator(name,course,datetext,cid): """function to generate certificate""" image_source = Image.open(r'/media/xxxxx/xxxxxxx/certgen

我是枕头包新手,我正在尝试绘制一段文字,该段文字的中心对齐大约有100个单词,但文字超出了图像的范围,我如何管理它,下面是我尝试的代码:

请让我知道

多谢各位

def certgenerator(name,course,datetext,cid):
"""function to generate certificate"""
image_source = Image.open(r'/media/xxxxx/xxxxxxx/certgentestroom/certgen-1/originals/empty002.jpg')
spacing = 50
draw = ImageDraw.Draw(image_source)
x = datetime.now()
msg3  = x.strftime("%d.%m.%Y")
font = ImageFont.truetype("/media/xxxxxx/xxxxx/certgentestroom/fonts/ArialBold.ttf", size=60)
draw.multiline_text((750,730), msg3, fill ="black", font = font,spacing = spacing,align="center")
name_width, name_height = draw.textsize(name, font=font)
# draw.text((WIDTH-name_width/2, HEIGHT-name_height/2), name, fill=FONT_COLOR, font=font)
draw.text((750,850), name, fill=FONT_COLOR, font=font)
font = ImageFont.truetype("/media/xxxxxxx/xxxxxxxxxxx/certgentestroom/fonts/ArialBold.ttf", size=60)
name_width, name_height = draw.textsize(course, font=font)
# draw.text((CWIDTH-name_width/2, CHEIGHT-name_height/2), course, fill=FONT_COLOR, font=font)
draw.text((750,1100), course, fill=FONT_COLOR, font=font)
#Date generation module
#draw.multiline_text((2520,2490), msg3, fill ="black", font = font,spacing = spacing,align="center")    
z=1220
x =0
y = len(description)
for i in range(x,y,12):
    x = i
    print("no.of words:",len(description[x:x+12]))
    print (description[x:x+12])
    j = ' '.join(description[x:x+12])
    draw.multiline_text((755,z), j, fill ="black", font = font,spacing = spacing,align="center")
    z=z+80


# font = ImageFont.truetype("/media/mgbhargava/Codegnan/certgentestroom/fonts/arial.ttf", size=30)
# draw.multiline_text((740,1220), decsription, fill ="black", font = font,spacing = spacing,align="center")    
image_source.save( name+".jpg")
print('printing certificate of: '+name)

是的,明白了我试着在空背景上打印段落并在所需图像上渲染,谢谢帮助

是的,明白了我试着在空背景上打印段落并在所需图像上渲染,谢谢帮助

有很多方法来绘制段落,使其适合。您需要决定要实现哪一个,然后就可以编写决定如何实现的代码。就目前而言,目标太模糊了。好吧,关于它的任何参考或例子@martineauNo,我都不知道。您可以使用PIL
ImageFont
的方法来确定给定文本字符串的大小-宽度和高度-以像素为单位。内置模块可以将给定段落中的单词拆分为具有不同最大字符数的行。我认为使用这两个函数/方法应该可以做你想做的事情,但是有很多活动的部分…有很多方法来绘制段落,使其适合。您需要决定要实现哪一个,然后就可以编写决定如何实现的代码。就目前而言,目标太模糊了。好吧,关于它的任何参考或例子@martineauNo,我都不知道。您可以使用PIL
ImageFont
的方法来确定给定文本字符串的大小-宽度和高度-以像素为单位。内置模块可以将给定段落中的单词拆分为具有不同最大字符数的行。我认为使用这两个函数/方法应该可以做你想做的事情,但是有很多活动部件…