批處理bat為照片批量添加隨機(jī)圖片水印(隨機(jī)圖片隨機(jī)位置)
在吾愛論壇看到有人發(fā)布了一個圖形化的軟件,作用是批量給照片添加一個隨機(jī)的圖片水印。大致背景如下:
- 例如,有1000張照片,格式包括png和jpg兩種(或者更多種)。
- 有100張不同的水印圖片,需要把這些水印圖片隨機(jī)的添加到照片上。
- 每張照片添加一張水印圖片,而且水印圖片需要出現(xiàn)在照片的不同位置上。
- 使用PhotoShop錄制的功能無法完全滿足需求。
作為一名BAT腳本愛好者,我們當(dāng)然要動手嘗試一下啦。下載并安裝 ImageMagick 命令行工具,然后由簡到難一步一步來。
1、給單張照片的固定位置添加一個圖片水印。
magick.exe composite -gravity Center "水印圖片.png" "照片.jpg" "合成.jpg"
2、統(tǒng)計有多少張水印圖片,把它們編號依次保存在指定格式的變量里面。
@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腳本里面沒有數(shù)組,這個方法可以理解為把水印圖片的文件名放入一個模擬數(shù)組里面。
3、把九個方位也放入一個模擬數(shù)組里面。
@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
本例我們設(shè)置水印圖片可以出現(xiàn)在照片的九個方位:
左上、中上、右上
左中、正中、右中
左下、中下、右下
4、完整代碼
RandomPictureWatermark.bat
@echo offsetlocal enabledelayedexpansionREM 1、下載并安裝 ImageMagick 這個命令行工具REM https://imagemagick.org/script/download.php#windowsREM 2、根據(jù)自己電腦實(shí)際安裝路徑設(shè)置以下臨時環(huán)境變量set "path=C:\Program Files\ImageMagick;%path%" REM 設(shè)置待處理的照片所在的目錄set "FolderOld=C:\Test\照片"REM 設(shè)置水印圖片所在的目錄set "FolderWM=C:\Test\水印"REM 設(shè)置添加水印之后的照片所在的目錄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 假設(shè)待處理的照片有jpg、png兩種格式,如有需要可以繼續(xù)添加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、根據(jù)自己電腦實(shí)際安裝路徑設(shè)置以下臨時環(huán)境變量 set "path=C:\Program Files\ImageMagick;%path%" REM 設(shè)置待處理的照片所在的目錄 set "FolderOld=C:\Test\照片" REM 設(shè)置水印圖片所在的目錄 set "FolderWM=C:\Test\水印" REM 設(shè)置添加水印之后的照片所在的目錄 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 假設(shè)待處理的照片有jpg、png兩種格式,如有需要可以繼續(xù)添加 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、效果圖
寫在最后:
如果有需要讓水印圖片出現(xiàn)在照片里的位置“更加隨機(jī)”的話,可以不使用那九個方位。思路是,分別計算照片和水印圖片的長和寬,生成兩個大小合適的隨機(jī)數(shù)X和Y,把這一對X,Y當(dāng)成水印圖片左上角出現(xiàn)在照片里的位置坐標(biāo)。有興趣的朋友可以自行嘗試。
相關(guān)文章
批處理腳本(.bat)實(shí)現(xiàn)實(shí)時監(jiān)測文件夾并執(zhí)行命令?(假設(shè)有新文件則拷貝到遠(yuǎn)程文件夾內(nèi))
文章介紹了如何使用批處理腳本(.bat)實(shí)現(xiàn)實(shí)時監(jiān)測文件夾,并在檢測到新文件時將其拷貝到遠(yuǎn)程文件夾中,腳本通過比較當(dāng)前和之前的文件列表來檢測新文件,并根據(jù)文件名首字母進(jìn)行條件判斷,滿足條件的文件將被拷貝,感興趣的朋友一起看看吧2025-02-02網(wǎng)管專用自動更改IP\機(jī)器名\工作組的批處理
可以將該bat文件封裝到gho文件里面,恢復(fù)重啟完后就可以自動設(shè)置,我不要做其他操作,用戶就可以使用.如果有必要,你可以加上執(zhí)行完后自動刪除本身.2010-08-08