预期成果:在空白奖状模板中添加学生姓名并保持,批量保持不同姓名的学生奖状。学生姓名保存在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,ImageFontwith 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,ImageFontzi = 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,ImageFonttep = 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文件复制到文件夹下。

运行效果如下:



自己又写了一个说明文件~

撒花完结

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

  1. Python图片相册批处理器的设计与实现批量添加图片水印、批量命名等功能

    课题研究使用Python语言开发一个包含批量添加图片水印.批量命名等功能的图片批处理程序,功能模块大概包含以下模块: (1)首页模块:首页是整个软件的初始页面,包含用户登录.注册.关于本软件等功能,用 ...

  2. android批量添加联系人,Android实现批量添加联系人到通讯录

    由于工作上的需要,把数据库中备份的联系人添加到Android通讯录,一般都有几百条记录,插入一条数据系统默认commit一次,这样效率 由于工作上的需要,把数据库中备份的联系人添加到Android通讯 ...

  3. ewomail开源版邮箱服务器 批量添加邮箱实现邮箱批量接收验证码

    前言 最近折腾了一段时间的邮件服务器,常见的邮件服务器系统例如,muila,iredmail,roundcube,ewomail,hMindmail等等,重复安装了好几次,最后发现还是ewoamil搭 ...

  4. python批量添加文件夹_python批量新建文件夹

    0.背景 因为要经常写课备课,年级较多(G5-G11),每个年级的课程也比较多(1-100),每次都要新建文件夹,觉的比较麻烦,于是想着去写一个简单小程序去批量自动创建文件夹. 我的思路是这样的: 1 ...

  5. mybatis的oracle批量添加,Mybatis实现Oracle批量插入

    之前用的SqlSessionDaoSupport,但是网上搜了下,发现getSqlSession()不能设置ExecutorType,所以又自己重写了一个类,为SqlSession设置了Executo ...

  6. 批量添加用户 php,hmailserver批量添加用户

    将内容复制到txt文件中后缀改为vbs 将用户名密码替换为自己的 脚本内容如下: Option Explicit On Error resume next Dim obBaseApp Dim objF ...

  7. 【Python实例分析】批量生成海报--自动添加姓名和二维码

    最近参加了老男孩的一个python训练营,里面某项任务是要求在某个海报模板上批量添加姓名和二维码,生成类似下图的海报. 图中我用红色方框标记的是需要修改的地方,先来聊下自己的思路: 1.要进行图片操作 ...

  8. 关于批量添加用户和域用户

    首先看批量添加用户,有三种方法: 1.开始-运行-CMD 输入 for /l  %i   in (1,1,50)  do  net user  test%i  123456  /add 注:(1,1, ...

  9. 获取族_批量添加族参数(上)

    随着BIM技术在工程行业的普及,不少设备供应商也因此被拉下了水,一些项目的BIM实施细则就要求设备进场之前就必须提供设备的LOD400-500精度的BIM模型.BIM的精髓在于信息,做的再精细而没有信 ...

最新文章

  1. GitNote基于git的个人云笔记
  2. T1187 强制 NTLM 认证
  3. java 输出 三角形_Java实现输出三角形
  4. ASP.NET设置焦点到输入框
  5. 区块链80%项目靠同一个故事拿钱,但标准链说最坏的时机就是好的开始
  6. ajax链接php,关于php:在ajax切换后,单击链接没有任何作用?
  7. Windows上卸载SqlServer数据库
  8. 【Xamarin 挖墙脚系列:Xamarin SDK开源了................】
  9. 这样设置路由,99.9%的黑客都攻不破
  10. Android下图片处理的的一些方法
  11. csvreader_OpenCSV CSVReader CSVWriter示例
  12. javascript中for循环里面套定时器,始终打印结束值原因
  13. 关于button onclick a href 分析
  14. Spring之切入点表达式
  15. android定位!每个程序员都必须掌握的8种数据结构!完整版开放下载
  16. 设计网页字体css,css教程:网页字体及字体大小的设计
  17. 法人银行贷款逾期信息查询
  18. 天才学生的天才回答 让老师无话可说的语文答卷
  19. linux 日历,计算器,nano编辑器,开关机、重启,
  20. C++ 科学计数法和精度问题

热门文章

  1. 迁移学习在医学影像学中的应用
  2. aur打包linux微信,ArchLinux微信、TIM安装与乱码解决方法
  3. 设计模式初探(五)——二三模式一锅煮
  4. java 设置excel颜色_Java 为 Excel 中的行设置交替背景色
  5. 植物大战僵尸源代码java面向对象,植物大战僵尸:实现游戏内自动收集阳光
  6. win10,win11 下部署Vicuna-7B,Vicuna-13B模型,gpu cpu运行
  7. 并发——锁升级(偏向锁,轻量级锁,重量级锁,及常见锁)
  8. 全球与中国液压离合器市场现状及未来发展趋势(2022)
  9. 记录下:订单模块初步完成
  10. 【数学】高昆轮高数下强化