【发布时间】:2021-11-05 00:29:29
【问题描述】:
您好,我很想知道如何从一组不同的文件夹中随机合成几张图片。我认为这是Mark Setchell 在此thread 中的答案回答了我的问题,但我在 Windows 上,我不明白如何在 Windows 的 BAT 文件中使用此脚本。我不知道 unix 代码中的 $ 或者我是否正确提及它。
提前谢谢你。
更新:
我终于能够做到这一点。也感谢其他线程解决了我的 bat 命令脚本问题。
echo OFF
cls
setlocal enableDelayedExpansion
set /a folder1=1
for %%A in (./bg/*.png) do (set fol1[!folder1!]=%%~A
set /a folder1+=1 )
set /a folder2=1
for %%B in (./frame/*.png) do (set fol2[!folder2!]=%%~B
set /a folder2+=1 )
set /a folder3=1
for %%C in (./people/*.png) do (set fol3[!folder3!]=%%~C
set /a folder3+=1 )
set /a folder4=1
for %%D in (./box/*.png) do (set fol4[!folder4!]=%%~D
set /a folder4+=1 )
set totaloutput=10
for /l %%x in (1, 1, %totaloutput%) do (
:: Assigning random number to pick photos from array
set /a "_rand1=(!RANDOM!* (%folder1%-1) /32768)+1"
set /a "_rand2=(!RANDOM! * (%folder2%-1) /32768)+1"
set /a "_rand3=(!RANDOM! * (%folder3%-1) /32768)+1"
set /a "_rand4=(!RANDOM! * (%folder4%-1) /32768)+1"
:: Assigning filename with path to the picked photos
FOR %%A IN ("!_rand1!") DO set "file1=.\bg\!fol1[%%~A]!"
FOR %%B IN ("!_rand2!") DO set "file2=.\frame\!fol2[%%~B]!"
FOR %%C IN ("!_rand3!") DO set "file3=.\people\!fol3[%%~C]!"
FOR %%D IN ("!_rand4!") DO set "file4=.\box\!fol4[%%~D]!"
:: Assign output file numbering based on FOR iteration number
set "fileoutput=output-%%~x.png"
:: Final Magic
magick convert !file1! !file2! -composite !file3! -composite !file4! -composite !fileoutput!
)
输出样本:
【问题讨论】:
标签: windows image-processing scripting imagemagick