最近公司架構(gòu)做了一些調(diào)整,團(tuán)隊(duì)名、部門名都有發(fā)生一些變化,因?yàn)楣緝?nèi)部電郵都會(huì)帶上一個(gè)個(gè)人簽名,簽名里面有姓名,職稱,所屬團(tuán)隊(duì)和部門,個(gè)人電話、電郵等等資訊,為了整個(gè)公司的統(tǒng)一形象,所以想利用python寫一個(gè)腳本批量生成這些簽名圖片。
這么多個(gè)人資料怎么導(dǎo)入呢,可以使用excel表,讀取里面的值,再把這些值寫入到一個(gè)圖片中。因?yàn)闄谖幻Q都是固定的,所以只用調(diào)整一次位置就可以給所有人使用了。
廢話不多說,上代碼:
# -*- 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
# 設(shè)置字體樣式
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)
這樣無論有多少個(gè)人,都可以批量生成了。最后上一下效果圖,因?yàn)楸救瞬粫?huì)ui設(shè)計(jì),所以圖做的很丑,大概看看就好,哈哈。
