IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> ??GUI编程:图片批量加水印,附打包exe教程带图标(干货巨多,建藏!)?? -> 正文阅读

[Python知识库]??GUI编程:图片批量加水印,附打包exe教程带图标(干货巨多,建藏!)??

效果图请添加图片描述

写在前面

对于自己辛苦创作原创文章,相信大家都不愿意自己的文章被别人随便爬取。对于文章中的图片,可以通过添加水印的方式来防止侵权问题,读完本文你将学会 制作自己专属的水印批量化的添加水印实现可视化界面、通过将文件打包,可以将该功能分享给其他没有 Python 环境的人来运行,社交撩妹必备。话不多说,进入正题!

在这里插入图片描述

主要用到的库:

cv2OpenCV 是一个基于 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() 函数,遍历指定文件夹下的文件,获取图片格式为 pngjpg 的文件路径,然后遍历图片进行添加水印。

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


这就是本文所有的内容了,如果感觉还不错的话。? 点个赞再走吧!!!?

在这里插入图片描述
后续会继续分享各种有趣的文章,如果感兴趣的话可以点个关注不迷路哦~。

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-08-25 12:09:51  更:2021-08-25 12:10:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 11:40:59-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码