嗨,我很想知道如何從一組不同的檔案夾中隨機地對幾張圖片進行合成。我認為Mark Setchell在這個主題中的回答回答了我的問題,但是我在windows系統上,我不明白如何在Windows的BAT檔案中使用這個腳本。我不知道unix代碼中的$是什么意思,或者我是否正確地提到了它。
提前感謝你。
Updated:
我終于能夠使這個作業了。也感謝其他主題解決了我的bat命令腳本問題。
echo OFF
cls
setlocal enableDelayedExpansion
設定/a檔案夾1=1
for %%A in (./bg/*.png) do (set fol1[! folder1!]=%%~A
設定 /a folder1 =1 )
設定/a folder2=1
對于 %%B 在 (./frame/*.png) 做 (set fol2[!folder2!]=%%~B
設定 /a folder2 =1 )
設定/a folder3=1
對于 %%C in (./people/*.png) do (set fol3[! folder3!]=%%~C
設定 /a folder3 =1 )
設定/a folder4=1
對于 %%D 在 (./box/*.png) 做 (set fol4[!folder4!]=%%~D
設定 /a folder4 =1 )
設定總產出=10
for /l %x in (1, 1, %totaloutput%) do (
:: 指定亂數,從陣列中挑選照片
設定/a "_rand1=(!RANDOM!* (%folder1%-1) /32768) 1"
設定/a "_rand2=(!RANDOM! * (%folder2%-1) /32768) 1"
設定 /a "_rand3=(!RANDOM! * (%folder3%-1) /32768) 1"
設定 /a "_rand4=(!RANDOM! * (%folder4%-1) /32768) 1"
:: 將檔案名與路徑分配給所選照片
FOR %A IN ("!_rand1!") DO set "file1=.g! 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=.ox! fol4[%%~D]!"
:: 根據FOR的迭代號,指定輸出檔案的編號
設定 "fileoutput=output-%%~x.png"
:: 最后的魔術
magick convert !file1! !file2! -復合 !"file3! -復合 !"檔案4! -復合 !"檔案輸出!
)
輸出樣本:
uj5u.com熱心網友回復:
轉帖為答案:
echo OFF
cls
setlocal enableDelayedExpansion
設定/a檔案夾1=1
for %%A in (./bg/*.png) do (set fol1[! folder1!]=%%~A
設定 /a folder1 =1 )
設定/a folder2=1
對于 %%B 在 (./frame/*.png) 做 (set fol2[!folder2!]=%%~B
設定 /a folder2 =1 )
設定/a folder3=1
對于 %%C in (./people/*.png) do (set fol3[! folder3!]=%%~C
設定 /a folder3 =1 )
設定/a folder4=1
對于 %%D 在 (./box/*.png) 做 (set fol4[!folder4!]=%%~D
設定 /a folder4 =1 )
設定總產出=10
for /l %x in (1, 1, %totaloutput%) do (
:: 指定亂數,從陣列中挑選照片
設定/a "_rand1=(!RANDOM!* (%folder1%-1) /32768) 1"
設定/a "_rand2=(!RANDOM! * (%folder2%-1) /32768) 1"
設定 /a "_rand3=(!RANDOM! * (%folder3%-1) /32768) 1"
設定 /a "_rand4=(!RANDOM! * (%folder4%-1) /32768) 1"
:: 將檔案名與路徑分配給所選照片
FOR %A IN ("!_rand1!") DO set "file1=.g! 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=.ox! fol4[%%~D]!"
:: 根據FOR的迭代號,指定輸出檔案的編號
設定 "fileoutput=output-%%~x.png"
:: 最后的魔術
magick convert !file1! !file2! -復合 !"file3! -復合 !"檔案4! -復合 !"檔案輸出!
)
uj5u.com熱心網友回復:
我不會說"Windows",但可以給你一半的答案,希望你或其他人可以將其擴展為有效的東西。
你需要運行的基本ImageMagick命令是:
magick BACKGROUND.PNG OVERLAY1.PNG OVERLAY2.PNG -compose over -composite RESULT.PNG
如果你想在疊加之前將它們的尺寸全部調整為相同的大小,請使用:
magick BACKGROUND.PNG OVERLAY1.PNG OVERLAY2.PNG -resize 800x600! -合成over -合成RESULT.PNG
如果你想在疊加之前單獨調整它們的大小,請使用:
magick BACKGROUND.PNG ( OVERLAY1.PNG -resize 400x300 ) ( OVERLAY2.PNG -resize 100x100 ) -compose over -composite RESULT.PNG
因此,用你的一些圖片試試,看看你得到什么。用你的代碼和有代表性的樣本圖片更新你的問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/320321.html
標籤:
上一篇:從分割的影像中去除白色邊框
下一篇:如何剪掉透明背景?
