Python證件照制作小程序源代碼,可一鍵修改證件照背景及大小,采用removebg在線摳圖工具進行自動摳圖,程序中已提供默認apiKey(g79GjuedecMLVVwkfXWSLv26)。直接運行程序即可一鍵制作證件照。
核心程序代碼
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:
# 顯示錯誤信息
tree.heading("#0", text=e)
# 修改照片背景色
def replace_bg():
api_key = entry5.get()
# 在程序當前目錄創建一個error.log文件來保存錯誤信息(必要參數)
Path('error.log').touch()
rmbg = RemoveBg(api_key, 'error.log')
# 執行后會在 read_path 同級文件夾內生成一張 xxx_no_bg.png 的圖片
rmbg.remove_background_from_img_file(img_path)
img_no_bg = Image.open(Path(str(img_path) + '_no_bg.png'))
# 創建一個新的圖像,RGB代表真色彩,3通道,
# color可以為顏色英文名 red 或是 十六進制顏色代碼 #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
# 返回兩種格式的顏色代碼,這里只保存十六進制的
_, 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")
# 設置選擇圖片路徑組件
path1 = tk.StringVar()
entry1 = ttk.Entry(window, textvariable=path1, width=30)
entry1.insert(0, '格式要求png')
button1 = ttk.Button(window,width=10, text = "圖片路徑", command = selectFilePath)
# 設置選擇文件保存路徑組件
path2 = tk.StringVar()
entry2 = ttk.Entry(window, textvariable=path2, width=30)
button2 = ttk.Button(window,width=10, text = "保存路徑", command = selectDirPath)
# 設置選擇背景顏色組件
path3 = tk.StringVar()
entry3 = ttk.Entry(window, textvariable=path3, width=30)
button3 = ttk.Button(window, text='背景顏色', command=ChooseColor)
# 設置圖片大小,默認原圖大小,格式如295x413(標準一寸)
label = ttk.Label(window, text='默認原圖大小,若要修改請按[]內
格式,如 [295x413] (標準一寸照)', 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') #默認apiKey
entry5 = ttk.Entry(window, width=30, textvariable=moren,show="*")
label2 = ttk.Label(window, text='api-key', style='three.TLabel')
# 添加“同時修改”按鈕
button4 = ttk.Button(window, text = "同時修改", 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
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
程序
+關注
關注
117文章
3787瀏覽量
81038 -
源代碼
+關注
關注
96文章
2945瀏覽量
66747 -
python
+關注
關注
56文章
4797瀏覽量
84683
發布評論請先 登錄
相關推薦
榮耀9什么時候上市最新消息:華為榮耀9發布時間確定6月12日,配置、外觀設計、證件照、價格大曝光
今天,華為放出一張圖,說下月12日有神秘新品發布,應該就是榮耀9了。今日榮耀9的證件照也在工信部正式露臉,大致的裝備信息也浮出水面,匯集了曲面玻璃、雙攝、麒麟960等特性。下面就來各種信息大匯總!
發表于 05-26 17:39
?4215次閱讀
OPPO Reno證件照曝光,“鍘刀式”前置攝像頭搶眼
隨著發布時間的臨近,關于該機的消息越來越多,繼上周該機的標準版入網工信部后,現在有最新消息,該機的證件照首次得到確認。
華為Mate20X5G證件照公布 業界首款SA/NSA5G雙模手機
7月4日消息,工信部公布了華為Mate 20 X 5G證件照(型號為EVR-AN00),這是國行首款獲得5G終端電信進網許可證的智能手機。
努比亞Flip 5G折疊屏手機證件照首曝,即將國內發售
近日,匿名科技公司于MWC2024上發布的努比亞Flip 5G折疊屏手機已在工業和信息化部網站上展示出其證件照片,預示著此款新品將在國內市場即將推出。
華為云 Flexus X 實例部署安裝 HivisionIDPhoto 一個輕量級的 AI 證件照制作算法
背景 最近有一個開源項目非常火,就是 HivisionIDPhotos 一個輕量級的 AI 證件照制作算法 github 倉庫 https://github.com/Zeyi-Lin
評論