鎮樓圖
想當年我不會Python的時候,做個證件照還要下 XX證件照 軟件,每次5元,感覺血虧,現在長本事了,自己做證件照,XX證件照 拜拜了您嘞~
確保下面的庫都已安裝。
主要涉及到的庫:
tkinter:實現 GUI
編程(文本框、按鈕、標簽等組件實現 GUI 開發)。
PIL:第三方圖像處理庫,十分強大,由于使用人數龐大再加上確實牛,幾乎已經被認為是 Python
官方圖像處理庫。
pathlib:面向對象的編程方式來表示文件系統路徑。
ttkthemes:tkinter
主題包,讓你的組件外觀更加騷。
Pyinstaller:是一個非常簡單的打包 .py
文件的庫。
removebg:看名字就知道,專門摳圖的庫。
pip install -i https://pypi.douban.com/simple removebg
進入 Removebg 官網,完成賬號注冊。
填寫完注冊信息后,會發送驗證郵件到你的郵箱,點擊進入后會進入如下界面。
點擊 Remove image background
再點擊紅圈中的 Tool & API
點擊 Get API Key
,
點擊 Show
即可查看 API Key 了,最好記下來哦,之后代碼中會用到。
使用 RemoveBg
時必須指定 api-key
與 error.log
(保存報錯信息的文件),去掉背景之后會在原圖片同級文件夾內生成一張 xxx_no_bg.png
的圖片,再創建一個指定顏色的背景板,將摳出來的圖粘貼到背景板上。
# 修改照片背景色def replace_bg(read_path, save_path, api_key, bg_color="blue"): # 在程序當前目錄創建一個error.log文件來保存錯誤信息(必要參數) Path("error.log").touch() rmbg = RemoveBg(api_key, "error.log") # 執行后會在 read_path 同級文件夾內生成一張 xxx_no_bg.png 的圖片 rmbg.remove_background_from_img_file(read_path) img_no_bg = Image.open(read_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) new_img.save(save_path)
讀取圖片,直接使用 resize
修改圖片尺寸,Image.ANTIALIAS
設置為高質量。
# 修改照片尺寸295x413(標準一寸)def change_size(read_path, save_path, width=295, height=413): image = Image.open(read_path) resized_image = image.resize((int(width), int(height)), Image.ANTIALIAS) resized_image.save(save_path)
這里使用的主題時 adapta
,官方推薦,樣式很好看。
window = ThemedTk(theme="adapta", fonts=True, themebg=True)window.title("證件照生成器")
選擇待修改圖片的路徑。
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) path1 = tk.StringVar()entry1 = ttk.Entry(window, textvariable=path1, width=30)entry1.insert(0, "格式要求png")button1 = ttk.Button(window,width=10, text = "圖片路徑", command = selectFilePath)
選擇修改后圖片的保存路徑,該路徑為文件夾。
def selectDirPath(): global dir_path # 選擇文件path接收文件地址 dir_path = Path(filedialog.askdirectory(title="選擇圖片保存路徑")) path2.set(dir_path) path2 = tk.StringVar()entry2 = ttk.Entry(window, textvariable=path2, width=30)button2 = ttk.Button(window,width=10, text = "保存路徑", command = selectDirPath)
這里使用tkinter
的 colorchooser
來當作顏色板,不得不說,實在是太好用了 。
def ChooseColor(): global bg_color # 返回兩種格式的顏色代碼,這里只保存十六進制的 _, bg_color = colorchooser.askcolor(title="顏色選擇器") path3.set(bg_color) path3 = tk.StringVar()entry3 = ttk.Entry(window, textvariable=path3, width=30)button3 = ttk.Button(window, text="背景顏色", command=ChooseColor)
如果要修改圖片的話,就填寫這一欄,默認為原圖尺寸,這里如果想要標準尺寸的話,建議先自己百度一下,如標準一寸就是295x413(標準一寸)。
# 設置圖片大小,默認原圖大小,格式如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
了。
# 填寫api-keyentry5 = ttk.Entry(window, width=30, 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"))
這里使用 grid()
來設置位置,也可以用 pick()
,但個人更傾向于前者。
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)
再原組件的基礎上修改自己喜歡的樣式。
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")
雖然之前的文章中已經介紹過很多次打包的方法,但為了新讀者,還是再來簡單講解一下。
首先要確保已經安裝 pyinstaller
,沒有安裝的可以先安裝一下。
pip install -i https://pypi.douban.com/simple pyinstaller
pyinstaller
使用時的常用參數含義:
-F:打包單個文件,產生一個文件用于部署(默認),如果代碼都寫在一個
.py
文件時使用,項目有多個文件時不要使用pyinstaller -F xxx.py
-D:打包多個文件,產生一個目錄用于部署(默認),用于框架編寫的代碼打包
pyinstaller -D xxx.py(項目入口文件)
–key=keys:使用
keys
進行加密打包pyinstaller --key=123456 -F xxx.py
-d:產生
debug
版本的可執行文件-p:用來添加程序所用到的包的所在位置,設置導入路徑,可以用
;
( Linux 使用:
)分割來指定多個目錄。-w:表示不用控制臺窗口,使用 Windows 子系統執行,當程序啟動的時候不會打開命令行(只對 Windows 有效)
-c:表示打開控制臺窗口,使用控制臺子系統執行,當程序啟動的時候會打開命令行(默認)(只對 Windows 有效)
-i:將 file.ico 添加為可執行文件的資源,改變程序的圖標(只對 Windows 系統有效)
安裝完成后,新建一個文件夾,將源文件放到該文件夾下面,打開cmd
, cd 進入該文件夾下(重點),執行下面語句
生成的文件結構如下
exe
可執行文件在 dist
目錄下
這就是本文所有的內容了,如果感覺還不錯的話。? 點個贊再走吧!!!?
后續會繼續分享各種干貨,如果感興趣的話可以點個關注不迷路哦~。
像我這么寵粉的人~當然會給關注我的粉絲們億點小福利啦,關注下方小卡片,回復工具左上角的名稱即可獲取源碼哦!
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/119758.html
上次講了2個游戲源碼 前端實戰之js推箱子游戲(有界面、附源碼、贊關藏) Python實戰:五子棋小游戲,切身感受一下前端和桌面應用的區別,選擇自己喜歡的 本來今天準備寫一篇面向對象文章,但是想一想,講面向對象之前還是先給大家介紹幾款實用的工具,更加快速的理解,掌握知識點。 1.UML 統一建模語言(Unified Modeling Language,UML)是一種為面向對象系統的產品進行說明、可...
摘要:文章目錄情景再現本文關鍵詞挑個軟柿子單頁爬取數據處理翻頁操作擼代碼主調度函數頁面抓取函數解析保存函數可視化顏色分布評價詞云圖源碼獲取方式情景再現今日天氣尚好,女友忽然欲買文胸,但不知何色更美,遂命吾剖析何色買者益眾,為點議,事后而獎勵之。 ...
文章目錄 selenium 簡介selenium安裝安裝瀏覽器驅動確定瀏覽器版本下載驅動 定位頁面元素打開指定頁面id 定位name 定位class 定位tag 定位xpath 定位css 定位link 定位partial_link 定位 瀏覽器控制修改瀏覽器窗口大小瀏覽器前進&后退瀏覽器刷新瀏覽器窗口切換常見操作 鼠標控制單擊左鍵單擊右鍵雙擊拖動鼠標懸停 鍵盤控制 seleni...
摘要:耗時代碼運行到這句之后觸發隱式等待,在輪詢檢查后仍然沒有定位到元素,拋出異常。耗時值得一提的是,對于定位不到元素的時候,從耗時方面隱式等待和強制等待沒什么區別。 ...
閱讀 3022·2021-11-18 10:07
閱讀 3764·2021-11-17 17:00
閱讀 2103·2021-11-15 18:01
閱讀 926·2021-10-11 10:58
閱讀 3373·2021-09-10 10:50
閱讀 3442·2021-08-13 15:05
閱讀 1229·2019-08-30 15:53
閱讀 2639·2019-08-29 13:01