You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows系统下如何随机分层叠加源图像自动生成合成图片?

需求说明

我需要从存放在不同文件夹的素材集中随机选取若干图像进行合成,之前看到的相关实现方案符合我的需求,但我使用的是Windows系统,不了解如何将Unix环境下的脚本改写为Windows可运行的BAT批处理文件,完全不清楚Unix代码中$符号的相关用法。
提前感谢各位的帮助。


更新

我已经成功调试好脚本可以正常运行,也感谢相关BAT命令教程帮我解决了批处理脚本的适配问题。
以下是最终可用的Windows 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 (

    :: 生成随机数从数组中选取素材
    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"
    
    :: 拼接选中素材的完整路径
    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]!"
    
    :: 按迭代序号生成输出文件名
    set "fileoutput=output-%%~x.png"
    
    :: 调用ImageMagick完成多层图像合成
    magick convert !file1! !file2! -composite !file3! -composite !file4! -composite !fileoutput!
    
)

使用说明

  • 提前在脚本同级目录新建bg、frame、people、box四个文件夹,分别放入对应分类的PNG素材
  • 代码中set totaloutput=10代表生成10张合成图,可根据需要修改数值
  • 运行脚本需要提前安装ImageMagick工具,确保magick命令可正常调用
  • 合成后的文件会保存在脚本同级目录,命名格式为output-序号.png

内容的提问来源于stack exchange,提问作者mAzri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 22:51:03