[Python] 纯文本查看 复制代码
from PIL import ImageFont
from PIL import Image
from PIL import ImageDraw
import os
import xlrd
def listdir(path, path_name): # 定义传入存储文件的list函数
for file in os.listdir(path): #依次获得返回指定的文件夹包含的文件或文件夹的名字的列表
file_path = os.path.join(path, file) #将多个路径组合后返回
if os.path.isdir(file_path): #返回一个列表,其中包含有指定路径下的目录和文件的名称
listdir(file_path, path_name)
else:
path_name.append(file_path) #加入到路径列表中
path_name = []
path = r'G:\Python\photos\工作证照片' # 文件夹路径
print(path)
photos = [] #设置空列表用以存储照片路径
listdir(path,path_name) #获得所有路径
for photo in path_name:
print(photo) #文件路径
photos.append(photo) #添加到列表中
"""读取工作证信息.xlsx内容"""
# path = g.fileopenbox(msg="选择文件", title="选择工作证信息表格", default='*', filetypes=None)
path = r"工作证信息.xlsx" #工作证信息的文件路径
data = xlrd.open_workbook(path, encoding_override='utf-8') #打开文件(文件路径)
table = data.sheets()[0] # 选定表 #第一个工作簿
nrows = table.nrows # 获取行号
ncols = table.ncols # 获取列号
names = [] #建一个空列表以存储名字
departments = [] #建一个空列表以存储部门
positions = [] #建一个空列表以存储职务
for i in range(1, nrows): # 第0行为表头
alldata = table.row_values(i) # 循环输出excel表中每一行,即所有数据
name = alldata[0] # 取出表中第一列数据 名字 计算机计数是从0开始,电脑的第0个其实是人眼中第1个
department = alldata[1] # 取出表中第二列数据 部门
position = alldata[2] # 取出表中第三列数据 职务
names.append(name) #添加到之前建立的空列表中
departments.append(department) #同上
positions.append(position) #同上
print(names,departments,positions) #打印
"""工作证上添加文字信息和图片"""
for name,department,position,i,photo in zip(names,departments,positions,range(1,len(names)+1),photos): #同时依次循环这三个列表和生成序号
# 打开工作证底版图片
imageFile = '工作证.png' #工作证的底图路径
image=Image.open(imageFile) #打开图片
draw = ImageDraw.Draw(image)
# 在工作证上添加文字
font = ImageFont.truetype('FZBWKSJW.TTF', 45) # 设置字体为 方正简体 大小为45
draw.text((320,490),name,(0,0,0),font) #添加名字 位置信息()
draw.text((300, 585), department, (0, 0, 0), font) # 添加文字 位置信息()
draw.text((320, 675), position, (0, 0, 0), font) # 添加文字 位置信息()
# 在工作证上添加照片
photo = Image.open(photo) #打开照片
image.paste(photo, (210, 133)) #将照片photo添加到工作证上,位置是(210,135)
dir_name = '工作证完成' # 目录名字
if not os.path.exists(dir_name): # 判断文件夹是否存在,如果不存在:
os.mkdir(dir_name) # 创建一个文件夹
image.save(dir_name + '/' + name + ".png") #保存处理完成的工作证
print(name + 'ok') #打印 处理 name完成
print('处理完成!') #打印全部完成