《Python编程快速上手—让繁琐工作自动化》第17章

17.7.3 定制的座位卡

from PIL import Image, ImageFont, ImageDraw
import os

os.chdir(r'#path') #路径
im = Image.new('RGBA',(360,288),'white')
fontFolder = r'C:\Windows\Fonts'
FontObj = ImageFont.truetype(os.path.join(fontFolder,'arial.ttf')\
                             ,50) #创建字体的ImageFont对象
imgFile = os.makedirs('guestImg',exist_ok=True)
logo = Image.open('xxx.png')

qualSize = 80 #用参数方便调整花图案大小

width,height = logo.size
if width > height:
    logo.resize((qualSize,int(qualSize*(height/width))))
else:
    logo.resize((int((width/height)*qualSize),qualSize))

im.paste(logo,(260,100))
im.save('diagram.png')
im = Image.open('diagram.png')


file = open('guests.txt')
guestsList = file.readlines()


for name in guestsList:
    name = name.strip('\n')
    print('Creating the board of {}'.format(name))
    newImg = im.copy() #复制得到一个新的Image对象
    draw = ImageDraw.Draw(newImg)    #创建ImageDraw对象
    draw.line([(0,0),(0,287),(359,287),(359,0),(0,0)],fill='black') #画黑线
    draw.text((20,100), name, fill='black',font=FontObj)
    filename = '{}.png'.format(name)
    newImg.save(os.path.join('guestImg',filename))

print('DONE')

总结:1.花案图片的大小要调合理
2.在给每个成员制作座位卡的时候,要在复制得到的新Image对象上进行。否则名字会重叠....
3.一段时间不练,写得有点乱......

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容