用Python【批量】生产【电子奖状】的方法请查收!

流程:
1.用PS设计好荣誉证书模板,在姓名处留白
2.批量生产

一、用PS设计好荣誉证书模板
在这里插入图片描述
二、批量生产
1.准备工作
将需要奖励的学生名单放在txt文档中;将荣誉证书模板、学生名单、.py程序放在同一个文件夹里。
在这里插入图片描述

2.批量生产

'''
批量生产电子奖状
'''
from docx.shared import Pt, RGBColor
from PIL import Image,ImageDraw,ImageFont 
old_img = Image.open(r"荣誉证书模板.png")#导入证书模板
draw = ImageDraw.Draw(old_img)
# 设置图片文字,字体,大小,颜色
newfont=ImageFont.truetype('c:Users/86136/AppData/Local/Microsoft/Windows/Fonts/HGH_CNKI.TTF',120)
newcolor = RGBColor(175,137,84) #通过RGB设置学生名字的颜色

with open("student.txt", "r",encoding = 'utf-8') as f: #循环制造
    for line in f.readlines():
        line = line.strip('\n')  #去掉列表中每一个元素的换行符
        old_img = Image.open(r"荣誉证书模板.png")
        draw = ImageDraw.Draw(old_img)
        # 设置图片文字,字体类型,以及字体大小,颜色
        newfont=ImageFont.truetype('c:Users/86136/AppData/Local/Microsoft/Windows/Fonts/HGH_CNKI.TTF',120)
        draw.text((850,750),line,font=newfont,fill = newcolor)
        save_adress = str(line) + '.png' 
        old_img.save(save_adress)
        print(line + "荣誉证书制作完成")

三、成果展示
在这里插入图片描述

四、制作过程中的报错经验
1.报错UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0xa2 in position 30: illega
解决:读取txt时,添加encoding = ‘utf-8’,且txt命名方式只能为英文字母不能为中文。
在这里插入图片描述
2.生成的奖状不能保存为.JPG而要保存为.PNG,因为JPG好像不支持RGB的颜色,只能用“black”、“red”这种内置颜色,所以打印不出来,而PNG格式可以。
3.疑问:本程序打印学生名字使用的字体为HGH_CNKI.TTF,但这个字体不太好看,想换,但其他很多字体打印出来就会报错为ascii‘ codec can‘t decode byte 0xe6。我尝试选择了其他字母名称的字体,依然报错,不知为何,所以个人对打印出来的学生名字字体有些许不满意。请大佬帮忙解决!

  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值