批处理bat为照片批量添加随机图片水印(随机图片随机位置)

2024-03-04 0 287

在吾爱论坛看到有人发布了一个图形化的软件,作用是批量给照片添加一个随机的图片水印。大致背景如下:

  • 例如,有1000张照片,格式包括png和jpg两种(或者更多种)。
  • 有100张不同的水印图片,需要把这些水印图片随机的添加到照片上。
  • 每张照片添加一张水印图片,而且水印图片需要出现在照片的不同位置上。
  • 使用PhotoShop录制的功能无法完全满足需求。

作为一名BAT脚本爱好者,我们当然要动手尝试一下啦。下载并安装 ImageMagick 命令行工具,然后由简到难一步一步来。

1、给单张照片的固定位置添加一个图片水印。

magick.exe composite -gravity Center \”水印图片.png\” \”照片.jpg\” \”合成.jpg\”

2、统计有多少张水印图片,把它们编号依次保存在指定格式的变量里面。

@echo off
setlocal enabledelayedexpansion
set \”FolderWM=C:\\Test\\水印\”
set \”IndexWM=0\”
for /f \”delims=\” %%i in (\’dir /a-d /b /s \”%FolderWM%\\*.png\”\’) do (
set /a IndexWM+=1
set \”File!IndexWM!=%%i\”
)
set File
pause

由于BAT脚本里面没有数组,这个方法可以理解为把水印图片的文件名放入一个模拟数组里面。

3、把九个方位也放入一个模拟数组里面。

@echo off
setlocal enabledelayedexpansion
set \”IndexGD=0\”
set \”ListDirect=NorthWest North NorthEast West Center East SouthWest South SouthEast\”
for %%i in (%ListDirect%) do (
set /a IndexGD+=1
set \”Position!IndexGD!=%%i\”
)
set Position
pause

本例我们设置水印图片可以出现在照片的九个方位:

左上、中上、右上

左中、正中、右中

左下、中下、右下

4、完整代码

RandomPictureWatermark.bat

@echo offsetlocal enabledelayedexpansionREM 1、下载并安装 ImageMagick 这个命令行工具REM https://imagemagick.org/script/download.php#windowsREM 2、根据自己电脑实际安装路径设置以下临时环境变量set \”path=C:\\Program Files\\ImageMagick;%path%\” REM 设置待处理的照片所在的目录set \”FolderOld=C:\\Test\\照片\”REM 设置水印图片所在的目录set \”FolderWM=C:\\Test\\水印\”REM 设置添加水印之后的照片所在的目录set \”FolderNew=C:\\Test\\合成\” set \”IndexWM=0\”for /f \”delims=\” %%i in (\’dir /a-d /b /s \”%FolderWM%\\*.png\”\’) do ( set /a IndexWM+=1 set \”File!IndexWM!=%%i\”) set \”IndexGD=0\”set \”ListDirect=NorthWest North NorthEast West Center East SouthWest South SouthEast\”for %%i in (%ListDirect%) do ( set /a IndexGD+=1 set \”Position!IndexGD!=%%i\”) REM 假设待处理的照片有jpg、png两种格式,如有需要可以继续添加set \”ListExt=jpg png\”set \”PictureType=\”for %%i in (%ListExt%) do ( set \”PictureType=!PictureType! *.%%i\”) pushd \”%FolderOld%\”for /f \”delims=\” %%i in (\’dir /b /a-d !PictureType!\’) do ( echo %%i set /a SelectWM=!random!%%!IndexWM!+1 ping -n 2 127.0.0.1 >nul set /a SelectGD=!random!%%!IndexGD!+1 call magick.exe composite -gravity %%Position!SelectGD!%% \”%%File!SelectWM!%%\” \”%%i\” \”%FolderNew%\\%%i\”)popdendlocal
@echo off
setlocal enabledelayedexpansion
REM 1、下载并安装 ImageMagick 这个命令行工具
REM https://imagemagick.org/script/download.php#windows
REM 2、根据自己电脑实际安装路径设置以下临时环境变量
set \”path=C:\\Program Files\\ImageMagick;%path%\”

REM 设置待处理的照片所在的目录
set \”FolderOld=C:\\Test\\照片\”
REM 设置水印图片所在的目录
set \”FolderWM=C:\\Test\\水印\”
REM 设置添加水印之后的照片所在的目录
set \”FolderNew=C:\\Test\\合成\”

set \”IndexWM=0\”
for /f \”delims=\” %%i in (\’dir /a-d /b /s \”%FolderWM%\\*.png\”\’) do (
set /a IndexWM+=1
set \”File!IndexWM!=%%i\”
)

set \”IndexGD=0\”
set \”ListDirect=NorthWest North NorthEast West Center East SouthWest South SouthEast\”
for %%i in (%ListDirect%) do (
set /a IndexGD+=1
set \”Position!IndexGD!=%%i\”
)

REM 假设待处理的照片有jpg、png两种格式,如有需要可以继续添加
set \”ListExt=jpg png\”
set \”PictureType=\”
for %%i in (%ListExt%) do (
set \”PictureType=!PictureType! *.%%i\”
)

pushd \”%FolderOld%\”
for /f \”delims=\” %%i in (\’dir /b /a-d !PictureType!\’) do (
echo %%i
set /a SelectWM=!random!%%!IndexWM!+1
ping -n 2 127.0.0.1 >nul
set /a SelectGD=!random!%%!IndexGD!+1
call magick.exe composite -gravity %%Position!SelectGD!%% \”%%File!SelectWM!%%\” \”%%i\” \”%FolderNew%\\%%i\”
)
popd
endlocal

5、效果图

批处理bat为照片批量添加随机图片水印(随机图片随机位置)

批处理bat为照片批量添加随机图片水印(随机图片随机位置)

批处理bat为照片批量添加随机图片水印(随机图片随机位置)

写在最后:

如果有需要让水印图片出现在照片里的位置“更加随机”的话,可以不使用那九个方位。思路是,分别计算照片和水印图片的长和宽,生成两个大小合适的随机数X和Y,把这一对X,Y当成水印图片左上角出现在照片里的位置坐标。有兴趣的朋友可以自行尝试。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悠久资源 DOS/BAT 批处理bat为照片批量添加随机图片水印(随机图片随机位置) https://www.u-9.cn/jiaoben/dosbat/183070.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务