預期成果:在空白獎狀模板中添加學生姓名並保持,批量保持不同姓名的學生獎狀。學生姓名保存在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文件複製到文件夾下。
運行效果如下:
自己又寫了一個說明文件~
撒花完結