用Python【批量】生产【电子奖状】的方法请查收!
生活随笔
收集整理的這篇文章主要介紹了
用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: #循環(huán)制造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。我嘗試選擇了其他字母名稱的字體,依然報錯,不知為何,所以個人對打印出來的學生名字字體有些許不滿意。請大佬幫忙解決!
總結
以上是生活随笔為你收集整理的用Python【批量】生产【电子奖状】的方法请查收!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 坦克大战设计论文,java坦克
- 下一篇: Windows CE如何根据文件名获取其