文章目錄
- 寫在前面
- 實作圖片添加水印
- 實作 GUI(圖形用戶界面)
- Pyinstaller 打包
效果圖
寫在前面
對于自己辛苦創作原創文章,相信大家都不愿意自己的文章被別人隨便爬取,對于文章中的圖片,可以通過添加水印的方式來防止侵權問題,讀完本文你將學會 制作自己專屬的水印、批量化的添加水印、實作可視化界面、通過將檔案打包,可以將該功能分享給其他沒有 Python
環境的人來運行,社交撩妹必備,話不多說,進入正題!
主要用到的庫:
cv2:OpenCV
是一個基于 BSD
許可(開源)發行的跨平臺計算機視覺庫,實作了影像處理和計算機視覺方面的很多通用演算法,
PIL:第三方影像處理庫,十分強大,由于使用人數龐大再加上確實牛,幾乎已經被認為是 Python
官方影像處理庫,
tkinter:實作 GUI
編程(文本框、按鈕、標簽等組件實作 GUI
開發),
Pyinstaller:是一個非常簡單的打包 .py
檔案的庫,
實作圖片添加水印
add_mark()
函式,實作對指定路徑下的圖片添加水印,
def add_mark(read_path, save_path):
'''
在讀取的圖片上添加水印
:param read_path: 原圖片路徑
:param save_path: 保存檔案的路徑
:return: 無
'''
img = Image.open(read_path)
'''個性設定'''
text = "CSDN Dream丶Killer"
font_size = 35 # 文字大小
font_color = (205, 201, 201, 150) # 文字顏色最后一位 150 是透明度
alpha = 30 # 文字離邊界的距離
font_path = r'C:\Windows\Fonts\HGHP_CNKI.TTF'
height, width = img.size
font = ImageFont.truetype(font_path, font_size)
im = img.convert('RGBA') # 實體圖形物件,并指定色彩模式
mark = Image.new('RGBA', (height, width), ((0, 0, 0, 0)))
draw = ImageDraw.Draw(mark)
text_h, text_w = draw.textsize(text, font=font)
position = (height - text_h - alpha, width - text_w - alpha) # position 即為字體左上角的坐標,當前水印位置:右下
# position = (0 + alpha, 0 + alpha) # 左上
# position = (height - text_h - alpha, 0 + alpha) # 右上
# position = (0 + alpha, w - text_w - alpha) # 左下
draw.text(position, text, font=font, fill=font_color)
# 只能保存為png格式
Image.alpha_composite(im, mark).save(save_path)
get_path()
函式,遍歷指定檔案夾下的檔案,獲取圖片格式為 png
,jpg
的檔案路徑,然后遍歷圖片進行添加水印,
def get_path():
dir_path = r'C:\Users\pc\Desktop\test' # 保存圖片的檔案夾
path_list = list(Path(dir_path).glob('*.png')) + list(Path(dir_path).glob('*.jpg'))
if path_list == 0:
return '檔案夾下無圖片'
for path in path_list:
save_path = Path(path.parent, path.name.split('.')[0] + '(加水印).png')
add_mark(path, save_path) # 添加水印
這樣通過上面兩個函式,就可是實作圖片批量添加的功能,
實作 GUI(圖形用戶界面)
考慮到要打包成 exe
,沒有個界面怎么能行哈!所以可以用 tkinter
實作 GUI
,先看一下生成的界面,
主要組件就是三個 Entery
,兩個分別用來輸入水印和字體路徑,第三個用來顯示路徑選擇后的結果;兩個按鈕,一個用來選擇路徑,一個用來按鈕,跳轉到添加水印的函式;最后一個文本框,用來顯示執行的結果資訊,以及報錯內容,
值得一說的是,上面的界面是設定過 tkinter
樣式的,如果未修改樣式的話,界面如下:
差別還是比較明顯的,修改 tkinter
主題樣式的方法如下:
from tkinter.ttk import *
實際就是匯入 tkinter
庫中的 ttk
下的所有組件,來覆寫 tkinter
庫中原本的組件,但覆寫后的組件引數并不完全一樣,比如創建一個帶背景顏色的標簽,兩種樣式的創建方法如下:
# tkinter
tkinter.Label(text="sun", fg="black", bg="white")
# tkinter.ttk
style = ttk.Style()
style.configure("label", foreground="black", background="white")
ttk.Label(text="Test", style="label")
Pyinstaller 打包
如果沒有安裝 pyinstaller
的,可以先安裝一下,
pip install -i https://pypi.douban.com/simple pyinstaller
安裝后可以使用 pip show pyinstaller
來檢測是否安裝成功,
如果確保安裝成功,那么接下來就是關鍵了,
新建一個檔案夾,將 .py
檔案放入檔案夾中,
打開 cmd
進入當前目錄下,
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 系統有效)
開始打包:
運行后新生成如下檔案,
exe
檔案在 dist
檔案夾下面,到這里就可以把 .exe
檔案發送給小伙伴,他就可以在沒有任何配置的情況下運行哦~(前提是同樣是 Windows
下哦)
這里的圖示是我自己在網上找的,
如果沒有 ico
格式的圖示的話,
推薦一個免費的 icon
網站:https://iconstore.co/
然后在 https://www.aconvert.com/cn/icon/svg-to-ico/ 轉換成指定大小的 ico
圖示,
最后文章中的原始碼及打包后的檔案已經放到鏈接下,需要的可以自己下載,粉絲可以直接評論回復郵箱直接發送到位哦~
代碼獲取:https://download.csdn.net/download/qq_43965708/21399637
這就是本文所有的內容了,如果感徑訓不錯的話,? 點個贊再走吧!!!?
后續會繼續分享各種有趣的文章,如果感興趣的話可以點個關注不迷路哦~,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/295628.html
標籤:其他
下一篇:《王道》資料結構筆記整理2022