原标题:100111-批量为图片添加水印-参数可自定义-支持子孙文件夹下图片添加水印【源代码】
导读:
水印添加工具代码解析功能概述:该代码实现了一个命令行工具,用于为指定文件夹及其子文件夹中的图片添加水印。支持多种图片格式,包括.jpg、.jpeg、.png、.bmp、....
水印添加工具代码解析
-
功能概述:该代码实现了一个命令行工具,用于为指定文件夹及其子文件夹中的图片添加水印。支持多种图片格式,包括
.jpg
、.jpeg
、.png
、.bmp
、.tiff
、.webp
。用户可以自定义水印内容、文字大小、透明度、间隔、旋转角度、文本颜色以及输出图片质量等参数。程序会在输入文件夹下创建一个指定名称(默认为output
)的子文件夹,将添加水印后的图片保存到该子文件夹中。 -
操作步骤
- 运行程序:启动代码后,程序首先会打印作者相关信息以及操作提示。
- 输入参数:
- 水印内容:程序提示“请输入水印文字内容: ”,用户输入想要添加的水印文字。
- 图片文件夹路径:接着提示“请输入图片所在文件夹路径支持子孙文件夹内图片: ”,用户输入包含图片的文件夹路径,程序会处理该文件夹及其所有子文件夹中的图片。
- 水印文字大小:提示“请输入水印文字大小建议12可自定义: ”,用户输入水印文字的大小,例如12。
- 水印透明度:提示“请输入水印透明度(0到1之间的小数)建议0.1可自定义: ”,用户输入0到1之间的小数来设置水印透明度,如0.1。
- 水印间隔:提示“请输入两个水印文字之间的间隔建议16可自定义: ”,用户输入水印文字之间的间隔值,例如16。
- 水印旋转角度:提示“请输入水印旋转角度建议35可自定义: ”,用户输入水印的旋转角度,如35度。
- 输出图片质量:提示“请输入输出图片质量建议100可自定义: ”,用户输入输出图片的质量值,一般输入100。
- 水印文本颜色:提示“请输入水印文本颜色(灰色#C0C0C0 白色#FFFFFF 金黄色#FFD700 建议白色): ”,用户输入表示颜色的十六进制值,如
#FFFFFF
。
- 处理图片:程序根据用户输入的参数生成水印,并为指定文件夹及其子文件夹中的所有图片添加水印。添加水印后,图片会被保存到输入文件夹下的
output
文件夹(可自定义名称)中。处理过程中,控制台会显示每张图片添加水印成功及输出路径的信息。 - 决定是否继续:程序最后询问“是否要继续运行程序?(y/n): ”,若用户输入
y
(不区分大小写),可重复上述步骤处理其他文件夹的图片;若输入其他字符,程序终止运行。
-
代码结构分析
- 函数定义:
- 图片类型判断:
is_image_file
函数用于检查文件是否为支持的图片类型,通过比较文件扩展名来判断。 - 添加水印并保存:
add_mark
函数负责打开图片,调用传入的水印生成函数添加水印,然后根据图片格式和输出质量保存图片到指定的输出文件夹,并在控制台打印保存信息。 - 设置透明度:
set_opacity
函数通过调整图片的alpha通道来设置水印的透明度。 - 裁剪图片:
crop_image
函数用于裁剪图片边缘的空白部分,通过比较图片与空白背景的差异获取边界框来裁剪。 - 生成水印:
gen_mark
函数创建水印图片,设置文字、裁剪空白、调整透明度,并返回一个用于在原图上添加水印的函数。该函数会根据斜边长度创建大图,在大图上按一定规律排列水印,旋转大图后粘贴到原图上。 - 处理文件夹图片:
process_images_in_folder
函数使用os.walk
遍历指定文件夹及其子文件夹,对其中的图片文件调用add_mark
函数添加水印。 - 主函数:
main
函数使用argparse
处理命令行参数。若未通过命令行传入参数,则通过用户输入获取水印内容、图片文件夹路径等各项参数。调用gen_mark
生成水印函数,再调用process_images_in_folder
处理图片,并在每次处理后询问用户是否继续运行。
- 图片类型判断:
- 函数定义:
-
对子文件夹及穿透情况:代码使用
os.walk
函数遍历args.file
指定的文件夹,这表明它不仅对主文件夹有效,还能穿透主文件夹下的所有子文件夹,对其中符合图片类型要求的文件进行水印添加操作。 -
实例验证:假设存在以下文件夹及文件结构:
主文件夹 │ ├── 文件夹 A │ ├── img1.jpg │ ├── img2.png │ └── img3.webp ├── 文件夹 B │ ├── img4.bmp │ └── img5.tiff
-
运行程序后,依次输入水印内容(如“版权所有”)、主文件夹路径、水印文字大小(如12)、水印透明度(如0.1)、水印间隔(如16)、水印旋转角度(如35)、输出图片质量(如100)、水印文本颜色(如
#FFFFFF
)。 -
程序会遍历主文件夹及其子文件夹,为
img1.jpg
、img2.png
、img3.webp
、img4.bmp
、img5.tiff
添加水印,并将添加水印后的图片保存到主文件夹下的output
文件夹中。处理过程中,控制台会显示每张图片添加水印成功及输出路径的信息。 -
处理完成后,若用户选择继续运行程序,可再次输入不同的参数进行新一轮的图片水印添加操作。
python版本:3.86
是否带UI界面:非UI版本
电脑系统版本:win10 64位 专业版系统(这是测试环境,其他环境也可以32位操作系统可能需要调整代码,让AI去转换即可)
脚本使用到的库:使用pycharm编辑器,如果没有安装相关库,会自动标红提示,鼠标放到标红的地方会弹出安装库按钮
重要提示:这是源代码,需要安装python使用,也可以自行修改部分代码实现想要的功能
查看源代码
- 随机文章
- 热门文章
- 778-批量删除指定文件夹下指定格式文件(包含子孙文件夹下的)
- 搜索A文件夹内与B文件夹下快捷方式指向的最后一个文件夹同名文件夹并移动文件夹到快捷方式所在文件夹下
- 使用docsify配合github搭建个人知识库
- 454-批量检测损坏pdf文件并移动到目标文件夹内
- 批量将pdf转为tiff格式-默认分辨率300-默认每页大小1.1
- 10082-2-批量解压压缩包-【支持子文件夹穿透-带密码的压缩包】【不支持多层嵌套压缩包】
- 10085-批量解压zip分卷文件-支持带密码-txt中一行一个密码-自动匹配-解压完成后删除分卷
- 10046-0-批量为视频添加文字水印自动匹配视频时长-文字-高度-底色自定义
- 10046-2-批量为视频左上角添加图片水印可设置水印透明度
- 100128-批量获取视频音频时长添加到文件名中支持子孙文件夹下操作
- 1开通VIP会员享全站内容免费查看
- 2🔥🔥🔥承接各种批处理工具定制 / 售后相关信息 / 任何需求请在该文章下留言
- 3752-批量复制文件及文件夹到多个文件夹
- 410081-1-批量解压自解压文件-【支持密码-子文件穿透】【不支持嵌套自解压或压缩包解压】-除自解压文件外不能有其他exe文件
- 5790-批量统计各文件夹下文件类型数量及文件夹路径输出到excell
- 6网页插入bilibili哔哩哔哩视频
- 7401-批量识别pdf中二维码并替换为指定图片或覆盖白色
- 8431-批量合并指定文件夹下各文件夹内pdf为一个pdf文件
- 9Adobe程序完全卸载教程完全卸载无残留-【包括单个程序卸载和全部程序卸载】(win系统版本)
- 10为ps脚本添加快捷键快速调用
还没有评论,来说两句吧...