行业资讯

semi-utils 批量水印终极指南:一键给照片盖上相机参数章

发布时间:2026/8/24 20:13:33
semi-utils 批量水印终极指南:一键给照片盖上相机参数章 semi-utils 批量水印终极指南一键给照片盖上相机参数章【免费下载链接】semi-utils一个批量添加相机机型和拍摄参数的工具后续「可能」添加其他功能。项目地址: https://gitcode.com/gh_mirrors/se/semi-utils写这篇之前我通读了项目的 README、核心代码和模板文件以下所有功能都基于项目真实能力。semi-utils 是一款面向照片的开源批量水印工具它自己读每张照片的 EXIF把相机型号、拍摄参数、品牌 Logo 自动压到画面上。不写代码、不做设计照着下文走大约 5 分钟能拿到第一批水印成品。一句话说清楚它是什么它是一台会自己查档案的盖章台。照片是文书EXIF 是档案——盖章台本来要人读档、填表、找印章这台机器自己读档、自己把型号参数填进版式、自己挑对应的品牌印章一张一张盖过去。你只负责把照片往台上一摞它负责盖得不出一张错。水印这件事难从来不在会不会加去年年底我接了朋友的一次影展出片420 张旅拍每张底部都要写型号、焦段、光圈、快门、ISO。前 50 张我手动敲到第 180 张手已经麻了交片那天回头翻发现第 3 张的焦距被我写成了 50mm——实际是 24mm。返工加复核前后耗掉 4 个小时。说白了我们大多数人缺的不是加水印的手艺难的是做得快不快、对不对参数容易敲错镜头名一串字母数字24-70mm f/2.8 错一位整行就废位置对不齐同样一段文字在不同分辨率上各站各的位置400 张有 400 种歪法风格不统一这次选的字体颜色跟上次对不上拼在一起看就显业余semi-utils 的解法很直接不靠你敲字参数直接从照片自带的 EXIF 里读版式按图片尺寸自动缩放整批共用同一套模板。两个核心能力值得花三分钟看懂EXIF 档案读取品牌 Logo 自动匹配它怎么做到对每张照片调用 exiftool 解析元数据拿到相机品牌与型号、镜头、焦距、光圈、快门、ISO、精确到秒的拍摄时间接着auto_logo()函数拿 EXIF 里的品牌字段去 config/logos/ 目录比对文件名项目自带尼康、佳能、索尼、富士、徕卡、哈苏、奥林巴斯、松下、宾得、理光、大疆 DJI 等品牌的标识匹配上就直接放进水印版式里。对你有什么用不用背参数也不用记 Logo 放哪。每张片子都带着自己的身份证而且是数据直读基本不可能抄错——终于不用再对着相机回放屏核对参数了。模板渲染版式跟着尺寸走整批一个样它怎么做到水印版式不是写死的而是一份 JSON 模板。渲染时 Jinja2 引擎先把模板里的{{ exif.FNumber }}光圈、{{ exif.ISO }}这类占位符替换成这张照片的真实参数vw()/vh()还能按图片宽高的百分比指定尺寸所以同一份模板在 4:3 和 16:9 的图上都会等比缩放随后 processor/ 里的管道把文字、Logo、分割线这些零件逐个加工最后合成一张成品。对你有什么用位置、字号、颜色全部由模板说了算整批完全一致换一台更高分辨率的相机版式自己跟着放大你不用碰一个像素。5 步跑出第一批水印成品第一步获取项目并初始化环境git clone https://gitcode.com/gh_mirrors/se/semi-utils cd semi-utils ./init.shinit.sh会检查 Python 版本、创建虚拟环境、安装依赖最后直接启动程序Windows 用户也可以直接使用打包好的主程序macOS 用户有随附的启动脚本。第二步放照片在项目目录下新建input文件夹把要处理的照片丢进去。支持.jpeg、.jpg、.png、.heiciPhone 的 HEIC 会自动转成 JPEG 再处理。第三步打开网页界面启动后浏览器会自动打开http://localhost:15050界面把 input 里的照片全部列出来可以全选也可以先挑几张试。第四步选模板点开始挑一套水印模板点开始。它并发处理照片界面实时滚动进度。第五步去 output 取成品处理完的图片输出到output文件夹并保留 input 里的目录结构。一个建议第一次先挑 510 张试跑确认版式、颜色、参数都对再整批放行。整批开跑前先自查这 3 件坑一进度条显示跳过output 里没有新文件现象处理跑完了output 却找不到成片进度里标着跳过原因默认override_existed Falseoutput 里已有同名文件时直接跳过避免覆盖你已有的成品对策删掉旧文件重新处理或者把 config/config.ini 里的override_existed改成True坑二水印里的型号、参数显示成横杠现象别的片子都正常个别几张水印的型号或参数区是空的、只剩-原因这张图的 EXIF 被抹掉了——社交平台转存过、后期软件清洗过或者本来就是张截图模板对缺失字段会用default(-)兜底对策先确认原片是否带参数确实没有的换原始文件或者在模板里自己定一个兜底值坑三角落里的品牌 Logo 没出现现象文字参数都在唯独 Logo 缺了原因auto_logo()靠 EXIF 里的品牌名去匹配 Logo 库文件名匹配不上就按无 Logo渲染不会报错对策确认品牌名能否对上 Logo 库对不上的把自己的 Logo 图片按品牌命名后放进 config/logos/7 套模板两个流派信息流先把什么机器拍的说清楚标准水印左上相机型号加粗、左下镜头型号、右上焦距光圈快门 ISO、右下拍摄时间角落再放品牌 Logo 加一条分割线。信息最全、专业感最强适合作品集和参赛投稿。右下角参数极简路线只在右下角低调放一行拍摄参数几乎不占画面。发朋友圈、小红书的场景首选。文件夹名右下角参数橙色文字显示文件夹名 拍摄时间一眼知道这张片子属于哪一批多组交付时特别实用。视觉流水印本身也是设计的一部分标准水印2在标准水印基础上加了圆角、阴影和留白整体更精致适合直接发社交媒体。背景模糊简洁风格相机型号 参数垂直居中展示背景高斯模糊把主体衬出来。尼康专用背景模糊把型号里的红色Z字拆出来高亮再配圆角、阴影和模糊背景胶片味很足。尼康 Z 系列用户值得专门试一次。Logo 居中画面中心放大品牌 Logo四周文字可自定义视觉冲击强适合品牌宣传和产品展示。把模板改成你自己的样式7 套模板都是 config/templates/ 目录下的 JSON 文件每个文件定义文字位置、颜色、字体、Logo 摆放。想自定义就复制一份现有模板改几个字段color从black改成你的品牌色比如#0A66C2调height控制文字在水印区的大小换font_path指向的字体文件项目自带阿里巴巴普惠体和 Roboto模板里可以直接用 Jinja2 语法引用 EXIF 字段{{ exif.FNumber }}出光圈、{{ exif.ISO }}出 ISOauto_logo()负责自动匹配 Logo。改完保存刷新网页就能用。不想碰 JSON 的话日常改 config/config.ini 就够了高频参数就这几个quality输出质量默认 60为控体积追求画质调到 8595成片观感明显不同override_existed是否覆盖已存在的输出文件template_name默认使用哪套模板水印之外底下还有一条管道水印只是第一条配方。翻 processor/ 的源码会发现整套工具是生成器 滤镜 合并器三类处理器的组合生成器负责产出文字、纯色、渐变底图滤镜负责模糊、缩放、裁剪、圆角、阴影、加边合并器负责水平/垂直拼接和对齐排布processor/core.py 里的引擎再把模板 JSON 逐个节点执行下来想让一批照片统一画幅margin_with_ratio按比例加白边竖图横图都能归到同一个画幅想做风格化底图gradient_color/solid_color生成器可以搭出纯色或渐变背景想要海报质感rounded_cornershadowmargin串起来就行看懂这条管道之后批量加水印就只是它的第一条配方剩下的都是排列组合。现在就可以开始克隆仓库跑一遍init.sh把环境备好丢照片进新建的 input 文件夹挑一套模板先拿 5 张试跑点开始收第一批批量水印成品你负责按下快门它负责把参数交代清楚。摄影人的体面从出片统一开始。【免费下载链接】semi-utils一个批量添加相机机型和拍摄参数的工具后续「可能」添加其他功能。项目地址: https://gitcode.com/gh_mirrors/se/semi-utils创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考