Python證件照制作小程序源代碼,可一鍵修改證件照背景及大小,采用removebg在線摳圖工具進(jìn)行自動(dòng)摳圖,程序中已提供默認(rèn)apiKey(g79GjuedecMLVVwkfXWSLv26)。直接運(yùn)行程序即可一鍵制作證件照。


核心程序代碼
from PIL import Image
from removebg import RemoveBg
from pathlib import Path
from tkinter import ttk
from ttkthemes import ThemedTk
import tkinter as tk
from tkinter import filedialog, colorchooser
'''
removebg 的APIKEY:g79GjuedecMLVVwkfXWSLv26
'''
img_path = ''
dir_path = ''
bg_color = 'blue'
def change_bg_size():
try:
global img_path
img_path = replace_bg()
change_size()
# 在輸出框顯示提示信息
tree.heading("#0", text="成功修改背景與大小!")
except Exception as e:
# 顯示錯(cuò)誤信息
tree.heading("#0", text=e)
# 修改照片背景色
def replace_bg():
api_key = entry5.get()
# 在程序當(dāng)前目錄創(chuàng)建一個(gè)error.log文件來保存錯(cuò)誤信息(必要參數(shù))
Path('error.log').touch()
rmbg = RemoveBg(api_key, 'error.log')
# 執(zhí)行后會在 read_path 同級文件夾內(nèi)生成一張 xxx_no_bg.png 的圖片
rmbg.remove_background_from_img_file(img_path)
img_no_bg = Image.open(Path(str(img_path) + '_no_bg.png'))
# 創(chuàng)建一個(gè)新的圖像,RGB代表真色彩,3通道,
# color可以為顏色英文名 red 或是 十六進(jìn)制顏色代碼 #00FF00
new_img = Image.new('RGB', img_no_bg.size, color=bg_color)
# 將沒有背景的圖像粘貼到含背景色的圖像上
new_img.paste(img_no_bg, (0, 0, *img_no_bg.size), img_no_bg)
save_path = Path(dir_path, str(img_path.name).split('.')[0] + 'replace_bg.png')
new_img.save(save_path)
return save_path
tree.heading("#0", text="圖片已生成!")
# 修改照片尺寸
def change_size():
width, height = entry4.get().split('x')
image = Image.open(img_path)
resized_image = image.resize((int(width), int(height)), Image.ANTIALIAS)
resized_image.save(Path(dir_path, str(img_path.name).split('.')[0] + '_change_size.png'))
tree.heading("#0", text="尺寸修改成功!")
# change_bgcolor('證件.png', 'p1_bg.png', 'oRdiK39HgoxdFE1A8QbL7wpF', 'red')
def selectFilePath():
global img_path
# 選擇文件path接收文件地址
img_path = Path(filedialog.askopenfilename(title='選擇原圖片'))
x, y = Image.open(img_path).size
entry4.insert(0, str(x) + 'x' + str(y))
path1.set(img_path)
def selectDirPath():
global dir_path
# 選擇文件path接收文件地址
dir_path = Path(filedialog.askdirectory(title='選擇圖片保存路徑'))
path2.set(dir_path)
def ChooseColor():
global bg_color
# 返回兩種格式的顏色代碼,這里只保存十六進(jìn)制的
_, bg_color = colorchooser.askcolor(title='顏色選擇器')
path3.set(bg_color)
window = ThemedTk(theme="adapta", fonts=True, themebg=True)
window.title('證件照生成器——Python代碼大全')
label_style = ttk.Style()
label_style.configure("one.TLabel", font=("微軟雅黑", 16, 'bold'), foreground="red", background="yellow")
label_style1 = ttk.Style()
label_style1.configure("two.TLabel", font=("微軟雅黑", 9), foreground="blue", background="yellow")
label_style2 = ttk.Style()
label_style2.configure("three.TLabel", font=("微軟雅黑", 10), foreground="blue", background="yellow")
# 設(shè)置選擇圖片路徑組件
path1 = tk.StringVar()
entry1 = ttk.Entry(window, textvariable=path1, width=30)
entry1.insert(0, '格式要求png')
button1 = ttk.Button(window,width=10, text = "圖片路徑", command = selectFilePath)
# 設(shè)置選擇文件保存路徑組件
path2 = tk.StringVar()
entry2 = ttk.Entry(window, textvariable=path2, width=30)
button2 = ttk.Button(window,width=10, text = "保存路徑", command = selectDirPath)
# 設(shè)置選擇背景顏色組件
path3 = tk.StringVar()
entry3 = ttk.Entry(window, textvariable=path3, width=30)
button3 = ttk.Button(window, text='背景顏色', command=ChooseColor)
# 設(shè)置圖片大小,默認(rèn)原圖大小,格式如295x413(標(biāo)準(zhǔn)一寸)
label = ttk.Label(window, text='默認(rèn)原圖大小,若要修改請按[]內(nèi)
格式,如 [295x413] (標(biāo)準(zhǔn)一寸照)', wraplength=200, style='two.TLabel')
entry4 = ttk.Entry(window, width=30)
label1 = ttk.Label(window, text='圖片尺寸', style='three.TLabel')
# 填寫api-key
moren = tk.StringVar(value='g79GjuedecMLVVwkfXWSLv26') #默認(rèn)apiKey
entry5 = ttk.Entry(window, width=30, textvariable=moren,show="*")
label2 = ttk.Label(window, text='api-key', style='three.TLabel')
# 添加“同時(shí)修改”按鈕
button4 = ttk.Button(window, text = "同時(shí)修改", command=change_bg_size)
# 添加“修改背景”按鈕
button5 = ttk.Button(window, text = "修改背景", command=replace_bg)
# 添加“修改尺寸”按鈕
button6 = ttk.Button(window, text = "修改尺寸", command=change_size)
# 添加輸出框顯示
tree = ttk.Treeview(height=1, show=("tree", "headings"))
#main_label.grid(row = 0, column = 0, pady=5)
entry1.grid(row = 1, column = 0, pady=5)
button1.grid(row = 1, column = 1, padx=20)
entry2.grid(row = 2, column = 0, pady=5)
button2.grid(row = 2, column = 1, padx=20)
entry3.grid(row = 3, column = 0, pady=5)
button3.grid(row = 3, column = 1, padx=20)
label.grid(row = 4, column = 0, pady=5)
entry4.grid(row = 5, column = 0, pady=5)
label1.grid(row = 5, column = 1, pady=5)
entry5.grid(row = 6, column = 0, pady=5)
label2.grid(row = 6, column = 1, pady=5)
button4.grid(row = 7, column = 1, padx=5)
button5.grid(row = 7, column = 0, padx=5)
button6.grid(row = 8, column = 0, padx=5)
tree.grid(row=9, column=0, pady=5)
window.mainloop()
完整代碼下載地址:
https://download.csdn.net/download/weixin_42756970/85474989
-
程序
+關(guān)注
關(guān)注
117文章
3824瀏覽量
82459 -
源代碼
+關(guān)注
關(guān)注
96文章
2950瀏覽量
67933 -
python
+關(guān)注
關(guān)注
56文章
4825瀏覽量
86238
發(fā)布評論請先 登錄
榮耀9什么時(shí)候上市最新消息:華為榮耀9發(fā)布時(shí)間確定6月12日,配置、外觀設(shè)計(jì)、證件照、價(jià)格大曝光
ATtiny單片機(jī)電子蠟燭的制作源代碼程序資料免費(fèi)下載

OPPO Reno證件照曝光,“鍘刀式”前置攝像頭搶眼
華為Mate20X5G證件照公布 業(yè)界首款SA/NSA5G雙模手機(jī)
Python微服務(wù)開發(fā)的源代碼合集免費(fèi)下載
Python版警察抓小偷游戲源代碼

努比亞Flip 5G折疊屏手機(jī)證件照首曝,即將國內(nèi)發(fā)售
華為云 Flexus X 實(shí)例部署安裝 HivisionIDPhoto 一個(gè)輕量級的 AI 證件照制作算法

原來他們也認(rèn)不出你的證件照!人證比對一體機(jī)提高識別準(zhǔn)確度

評論