最近公司架构做了一些调整,团队名、部门名都有发生一些变化,因为公司内部电邮都会带上一个个人签名,签名里面有姓名,职称,所属团队和部门,个人电话、电邮等等资讯,为了整个公司的统一形象,所以想利用python写一个脚本批量生成这些签名图片。
这么多个人资料怎么导入呢,可以使用excel表,读取里面的值,再把这些值写入到一个图片中。因为栏位名称都是固定的,所以只用调整一次位置就可以给所有人使用了。
废话不多说,上代码:
# -*- coding:utf-8 -*-
from PIL import Image, ImageDraw, ImageFont
from openpyxl import load_workbook
import time
# open excel,读取里面的值
wb = load_workbook('signature.xlsx')
sheet = wb.active
row = sheet.max_row
# 设置字体样式
font_type = '/System/Library/Fonts/STHeiti Light.ttc'
font_medium_type = '/System/Library/Fonts/STHeiti Medium.ttc'
name_font = ImageFont.truetype(font_medium_type, 55)
title_font = ImageFont.truetype(font_medium_type, 45)
font = ImageFont.truetype(font_type, 24)
color = (0, 0, 255, 255)
for l in range(1,row + 1):
l = str(l)
name = sheet['A'+l].value
title = sheet['B'+l].value
mobile = sheet['C'+l].value
telephone = sheet['D'+l].value
email = sheet['E'+l].value
address = sheet['F'+l].value
n = 18
summary_list = [address[i:i + n] for i in range(0, len(address), n)]
# 图片名称
img = './template.jpg' # 图片模板
new_img = name + '.jpg' # 生成的图片
compress_img = name + '_compress.jpg' # 压缩后的图片
# 打开图片
image = Image.open(img)
draw = ImageDraw.Draw(image)
# 写入name
draw.text((190, 10),name,font=name_font,fill=color)
# 写入title
draw.text((650,10), title, font=title_font,fill=color)
# 写入mobile
draw.text((190,80), mobile, font=font,fill=color)
# 写入telephont
draw.text((650,80), telephone, font=font,fill=color)
# 写入email
draw.text((190,130), email, font=font,fill=color)
# 写入address
summary_line = 35
for num, summary in enumerate(summary_list):
y = num * summary_line
draw.text((240, 170+y), summary, font=font,fill=color)
# 生成图片
image.save(new_img)
这样无论有多少个人,都可以批量生成了。最后上一下效果图,因为本人不会ui设计,所以图做的很丑,大概看看就好,哈哈。