请选择 进入手机版 | 继续访问电脑版

 找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 3712|回复: 9

[文件操作] [已解决]给文件夹里每一个大图多个位置添加指定文件夹里的多个随机水印,内有实例

[复制链接]
发表于 2026-9-28 00:52:44 | 显示全部楼层 |阅读模式
本帖最后由 crownking1983 于 2026-10-8 23:15 编辑

跪求给文件夹里每一个大图多个位置添加指定文件夹里的多个随机水印,具体实例如下:

在“C:\水印”文件夹下,有好几张PNG格式的作为水印的小图片,然后“D:\处理”文件夹下有几十张待处理需要加水印的大图。

跪求批处理bat命令程序,实现当我双击该bat文件后,

在“D:\处理”里的所有大图,都从“C:\水印”下随机挑选水印图,从大图顶部向下200像素的位置开始,每打一个随机水印就再间隔200个像素再打一个随机水印,直到打到图片的底部为止。

注意这里是每打一个水印以后,隔200个像素的高度再打下一个,不是每200个像素高度内打一个,一定要注意。

打的这些水印尺寸全部按照原始大小,透明度为X%,我可以在批处理命令里通过手动修改这个X%来调整水印的透明度。

我电脑里已安装过ImageMagick,同时也有magick.exe和mogrify.exe,如果用得上请告知使用哪个。

感谢各位大神帮忙了!谢谢!
发表于 2026-9-28 09:00:42 | 显示全部楼层
从大图顶部向下200像素的位置开始

水印在大图里面的位置是居中?靠左?靠右?
 楼主| 发表于 2026-9-28 09:28:33 | 显示全部楼层
本帖最后由 crownking1983 于 2026-9-28 10:34 编辑
ShowCode 发表于 2026-9-28 09:00
水印在大图里面的位置是居中?靠左?靠右?


居中 靠左 靠右 均随机即可 越没有规律越好 谢谢大神!

因为怕水印无限叠加在一起,才要求两个水印之间间隔200个像素。非常感谢大神
发表于 2026-9-28 12:51:41 | 显示全部楼层
crownking1983 发表于 2026-9-28 09:28
居中 靠左 靠右 均随机即可 越没有规律越好 谢谢大神!

因为怕水印无限叠加在一起,才要求两个水印之间 ...

卖渔卖渔,买家喜欢煎炒煮炖,自凭喜好,没售后,没质检,没三包,没投保!谢绝提刀问责~~~

  1. @Echo off
  2. Setlocal enabledelayedexpansion

  3. Rem;;;图片位置和路径自己完善
  4. For /f %%a in (dir/s/b input\ *.jpg) do (
  5. Rem;;;下句获取随机logo
  6. Call;:logo logos

  7. Rem;;;下句获取随机方位
  8. Call;:gravity Gprs

  9. Rem;;;下句获取随机偏移量
  10. Call;:whrl w h

  11. Rem;;; magick 程序位置自己修正指定,,,%%~na_output.jpg是输出文件,可以加上指定路径
  12. magick %%a %logos% -resize 20% -alpha set -channel A -evaluate multiply 0.5  -gravity %Gprs% -geometry +%w%+%h% -composite %%~na_output.jpg
  13. )

  14. Echo. 图片处理完成!任意键退出!
  15. Echo....脚本结尾~~~~~~下面的都是调用的标签~~~~~~~~~~~~~~~~~~~
  16. Pause >Nul & Exit

  17. :logo
  18. Rem;;;获取随机logo一张,其他位置和路径自己完善
  19. For /f %%b in (dir/s/b logo\ *.png) do (
  20. Set /a pics+=1
  21. Rem;;;无图片时 退出
  22. if !pics! equ 0 Echo. 没有图片???任意键退出! & Pause >Nul & Exit

  23. Set "pic!pics!=%%b"
  24. Set /a pran=!random! %% !pic! + 1
  25. Set %1=!pic%pran%!
  26. )
  27. Goto;:Eof

  28. :gravity
  29. Rem;;;随机挑一个位置,
  30. Set gs=%Random% %% 9
  31. if gs equ 0 Set %1=NorthWest
  32. if gs equ 1 Set %1=North
  33. if gs equ 2 Set %1=NorthEast
  34. if gs equ 3 Set %1=West
  35. if gs equ 4 Set %1=Center
  36. if gs equ 5 Set %1=East
  37. if gs equ 6 Set %1=SouthWest
  38. if gs equ 7 Set %1=South
  39. if gs equ 8 Set %1=SouthEast
  40. Goto;:Eof

  41. :whrl
  42. Rem;;;设定偏移量在20像素点漂浮,可根据需要自行设定随机量
  43. Set %1=%Random% %% 20
  44. Set %2=%Random% %% 20
  45. Goto;:Eof

  46. 命令解释:
  47. input.jpg: 原图。
  48. logo.png: 水印图片(建议背景透明)。
  49. -resize 20%: 将水印图片缩放为原尺寸的20%。
  50. -alpha set -channel A -evaluate multiply 0.5: 将水印的Alpha通道(透明度)乘以0.5,即变为50%透明。
  51. -geometry +10+10: 距离边缘的偏移量。
  52. -composite: 执行合成操作。
  53. -gravity 定位到~~~~~~~~~~~
  54. mageMagick 的 -gravity 参数一共支持 9 个标准方位值
  55. NorthWest        左上角        图像的最左上角顶点
  56. North                顶部居中        图像上边缘的中心点
  57. NorthEast                右上角        图像的最右上角顶点
  58. West                左侧居中        图像左边缘的中心点
  59. Center                正中心        图像画面的几何中心点
  60. East                右侧居中        图像右边缘的中心点
  61. SouthWest        左下角        图像的最左下角顶点
  62. South                底部居中        图像下边缘的中心点
  63. SouthEast                右下角        图像的最右下角顶点
复制代码



根据需求和要求来说,这样写的逻辑是没啥问题的,,,
肯定是要反复修正的,手头没程序,也没素材,,,,
二来,昨天人说我已达“神登”封号,,,哎!心情不好,不想写太多,,
三来,懒,懒,还是TM 的懒,,,,,,,,,,,,,

发表于 2026-9-29 21:31:46 | 显示全部楼层
本帖最后由 aloha20200628 于 2026-9-30 09:12 编辑

以下代码第三行可自定义三个变量:水印起始高度 h0,水印纵向间距 hm,水印透明度 vt
每次从水印图目录文件集数组中随机抽取其一,自上而下顺序合成到当前被处理的大图中,纵向间距=hm,横向位置随机而定
对每个大图 *.* 的处理结果会覆盖原图

test.bat
  1. @echo off &setlocal &chcp 936 >nul
  2. set "wd=c:\水印" &set "sd=d:\处理"
  3. cd /d "%sd%" &set/a "n=0, h0=200, hm=200, vt=50" &chcp 65001 >nul
  4. for /f "tokens=1* delims=:" %%a in ('dir /b/s/a-d "%wd%\*.png"^|findstr /n .*') do set/a "n+=1" &set "w[%%a]=%%b"
  5. for /f "delims=" %%F in ('dir /b/a-d *.jpg *.jpeg *.png') do (
  6.   for /f "tokens=1,2" %%a in ('magick identify -format "%%w %%h" "%%F" ') do set/a "ws=%%a,hs=%%b,rh=hs-h0"
  7.   (echo,"%%F"&echo,-compose dissolve -define compose:args=%vt%
  8.   setlocal enableDelayedExpansion &call :xxx &endlocal
  9.   echo,-write "%%F" -exit)>"#$.txt"
  10.   magick -script #$.txt )
  11. del /q "#$.txt" &exit/b
  12. :xxx
  13.   set/a "fn=1+%random%%%n"
  14.   for /f "tokens=1,2" %%a in ('magick identify -format "%%w %%h" "!w[%fn%]!" ') do set/a "wn=%%a,hn=%%b"
  15.   set/a "rw=ws-wn,h=hs-rh,rh-=hn+hm"
  16.   if %rh% lss 0 (exit/b) else set/a "w=1+%random%%%rw"
  17.   echo,"!w[%fn%]!" -gravity northWest -geometry +%w%+%h% -composite
  18.   goto :xxx
复制代码
 楼主| 发表于 2026-9-29 22:53:50 | 显示全部楼层
aloha20200628 发表于 2026-9-29 21:31
以下代码第二行可自定义三个变量:水印起始高度 h0,水印纵向间距 hm,水印透明度 vt
每次从水印图目录文件 ...

大神,我运行后出现了一个错误

系统找不到指定的路径。
系统找不到指定的文件。
identify: UnableToOpenConfigureFile `magic.xml' @ warning/configure.c/GetConfigureOptions/714.
以零为除数的错误。

意思大概是打不开设置文件 magic.xml

另外,我想让其运行后,处理后带水印的图直接覆盖同目录里的原图,因为我提前就有备份了不用再单独存一个new文件,该如何修改呢?
发表于 2026-9-30 08:44:45 | 显示全部楼层
本帖最后由 aloha20200628 于 2026-9-30 09:09 编辑
crownking1983 发表于 2026-9-29 22:53
大神,我运行后出现了一个错误

系统找不到指定的路径。


5楼代码已订正(如果水印图目录名和大图目录名均不包含中文,用原版代码 test.bat 也可以)
我用 magick v7 版测试成功的(可直接从本坛第三方下载,落地可用 http://bcn.bathome.net/s/tool/index.html?key=magick)
另要将 test.bat 存为简中编码即 ansi 或 gb2312
发表于 2026-10-2 21:51:20 | 显示全部楼层
本帖最后由 77七 于 2026-10-2 21:56 编辑



https://bbs.bathome.net/thread-963-1-1.html

第九条 标题违规:

   标题违规以语意模糊、不利于论坛搜索为常见,常见的形式有:


     (1) 万能标题类:关于××、××的问题、求助、求一个代码、这样的代码怎么
  写……
     (2) 催命类:十万火急、在线等、跪求、雪地裸体跪求……
     (3) 指名求助类:高手请进、版主请进、××请进……
     (4) 博取同情类:菜鸟求助、新手请教、帮帮小妹……
     (5) 挑衅类:高难度问题、是高手就进……
     (6) 不知所云类:???、!、SOS、大家好……
     (7) 夹带无意义字符(含表情符)类:××!!!、××……、●××●、☆××☆、
   ××~~~、……(××表示标题主体部分)
     (8) 刻意使用火星文类
发表于 2026-10-2 21:56:23 | 显示全部楼层
AI:

批处理批量给图片添加随机水印,横向随机、纵向间隔 200像素
新建 Windows 批处理文件.rar (2.24 KB)

评分

参与人数 1技术 +1 收起 理由
crownking1983 + 1 乐于助人

查看全部评分

 楼主| 发表于 2026-10-8 16:55:22 | 显示全部楼层
77七 发表于 2026-10-2 21:56
AI:

批处理批量给图片添加随机水印,横向随机、纵向间隔 200像素

太牛逼了 非常感谢!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-10-16 13:38

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表