效果图
写在前面
对于自己辛苦创作原创文章,相信大家都不愿意自己的文章被别人随便爬取。对于文章中的图片,可以通过添加水印的方式来防止侵权问题,读完本文你将学会 制作自己专属的水印、批量化的添加水印、实现可视化界面、通过将文件打包,可以将该功能分享给其他没有 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)
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)
draw.text(position, text, font=font, fill=font_color)
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.Label(text="sun", fg="black", bg="white")
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
这就是本文所有的内容了,如果感觉还不错的话。? 点个赞再走吧!!!?
后续会继续分享各种有趣的文章,如果感兴趣的话可以点个关注不迷路哦~。
|