预期成果:在空白奖状模板中添加学生姓名并保持,批量保持不同姓名的学生奖状。学生姓名保存在txt文件中。
STEP1 准备工作
- 安装图片处理的PIL模块
命令提示符下easy_install pillow
- 空白奖状图片,文件名为:jiangzhuang.jpg
- 获奖名单保存在txt,一个学生一行,文件名为:name.txt
STEP2 一张照片的添加姓名和另存为
from PIL import Image,ImageDraw,ImageFont
old_img = Image.open(r"jiangzhuang.jpg")
draw = ImageDraw.Draw(old_img)
# 设置图片文字,字体类型,以及字体大小,颜色
newfont=ImageFont.truetype('simkai.ttf',60)
draw.text((170,355),"小明",font=newfont,fill="blue")
#old_img.show() #运行显示
old_img.save('d:/jiangzhuang1.jpg')
STEP3 设置批量
发现读取txt文档的这部分代码可以直接用,自带循环,直接套用就可以。
一个问题就是输出的文件不能放到指定文件夹里,倒是影响不大。
from PIL import Image,ImageDraw,ImageFont
with open("name.txt", "r") as f:
for line in f.readlines():
line = line.strip('\n') #去掉列表中每一个元素的换行符
#print(line)
old_img = Image.open(r"jiangzhuang.jpg")
draw = ImageDraw.Draw(old_img)
# 设置图片文字,字体类型,以及字体大小,颜色
newfont = ImageFont.truetype('simkai.ttf', 60)
draw.text((170, 355), line, font=newfont, fill="blue")
#old_img.show() #运行显示
save_adress = str(line) + '.jpg'
old_img.save(save_adress)
print(line + "DONE")
输出为:
STEP4 设置自定义字体大小和位置,为封装为exe文件做准备。
from PIL import Image,ImageDraw,ImageFont
zi = int(input("请输入字体大小(推荐60):"))
x = int(input("请输入字体大小和姓名座标(推荐170):"))
y = int(input("请输入字体大小和姓名座标(推荐355):"))
with open("name.txt", "r") as f:
for line in f.readlines():
line = line.strip('\n') #去掉列表中每一个元素的换行符
#print(line)
old_img = Image.open(r"jiangzhuang.jpg")
draw = ImageDraw.Draw(old_img)
# 设置图片文字,字体类型,以及字体大小,颜色
newfont = ImageFont.truetype('simkai.ttf', zi)
draw.text((x, y), line, font=newfont, fill="blue")
#old_img.show() #运行显示
save_adress = str(line) + '.jpg'
old_img.save(save_adress)
print(line + "DONE")
old_img.show() #运行显示
STEP5 设置循环方便在exe中修改参数
from PIL import Image,ImageDraw,ImageFont
tep = 0
while tep == 0 :
zi = int(input("请输入姓名字体大小(推荐60):"))
color = input("请输入姓名字体颜色(推荐black、blue、red):")
x = int(input("请输入字体大小和姓名座标(推荐170):"))
y = int(input("请输入字体大小和姓名座标(推荐355):"))
old_img = Image.open(r"jiangzhuang.jpg")
draw = ImageDraw.Draw(old_img)
# 设置图片文字,字体类型,以及字体大小,颜色
newfont=ImageFont.truetype('simkai.ttf',zi)
draw.text((x,y),"测试名",font=newfont,fill=color)
print("请预览,预览后请关闭图片窗口。")
old_img.show() # 运行显示
tep = int(input("确认批量生成奖状请按1,重新调整参数请按0 : "))
with open("name.txt", "r") as f:
for line in f.readlines():
line = line.strip('\n') #去掉列表中每一个元素的换行符
#print(line)
old_img = Image.open(r"jiangzhuang.jpg")
draw = ImageDraw.Draw(old_img)
# 设置图片文字,字体类型,以及字体大小,颜色
newfont = ImageFont.truetype('simkai.ttf', zi)
draw.text((x, y), line, font=newfont, fill=color)
#old_img.show() #运行显示
save_adress = str(line) + '.jpg'
old_img.save(save_adress)
print(line + "DONE")
print("任务已完成,请打开文件夹查看。天天开心~~~~")
STEP6 封装为exe
具体做法参看
pygame设计一个刮刮乐加分小游戏小程序,教师加分奖,翻牌游戏
将奖状图片文件和txt文件复制到文件夹下。
运行效果如下:
自己又写了一个说明文件~
撒花完结