python批量添加姓名生成奖状批量处理图片教师学生奖状

预期成果:在空白奖状模板中添加学生姓名并保持,批量保持不同姓名的学生奖状。学生姓名保存在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文件复制到文件夹下。
在这里插入图片描述

运行效果如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
自己又写了一个说明文件~

撒花完结

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章