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文件複製到文件夾下。
在這裏插入圖片描述

運行效果如下:
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
自己又寫了一個說明文件~

撒花完結

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