如何使用 magick 在 cmd 中将图像序列淡入另一个图像序列?

How to fade an image sequence into another in cmd with magick?

我是 magick 库的新手,这个 cmd 语法也让我很受伤。我正在努力实现以下目标:

我有 2 个文件夹,每个文件夹包含 100 个 png 文件。我想像这样在这些图像之间呈现平滑过渡:

第一个文件夹中的第一张图片应与第二个文件夹中的第一张图片重叠,不透明度为 1%。

第一个文件夹中的第 45 张图像应与第二个文件夹中的第 45 张图像重叠,不透明度为 45%,依此类推...

我的文件被命名为 frame000.png、frame045.png(用零填充),这使问题更加复杂。

我尝试在批处理脚本中结合 for 循环和 magick 命令来实现此目的,但似乎什么也没发生,当我 运行 它只是将此文本打印到 cmd window 100次:

SET NUM=x SET PADDED=00NUM SET PADDED=PADDED:~-3 magick composite -dissolve PADDEDPADDEDPADDEDPADDED.png

我认为问题出在我的批处理语法中,但我想不通。这是我在 render.bat:

中的内容
FOR /L %%x IN (0,1,99) DO ^
SET NUM=%x ^
SET PADDED=00%NUM% ^
SET PADDED=%PADDED:~-3% ^
magick composite -dissolve %x -gravity Center "frl1/frame%PADDED%.png" "frl2/frame%PADDED%.png" -alpha SET "output/%PADDED%.png"
pause

我尝试将变量引用更改为 %x%%x%x%,但其中 none 给了我正确的结果。

您的 ^ 表示 "Line continuation" - 这不是批处理文件的工作方式。

你需要:

Setlocal enabledelayedexpansion
FOR /L %%x IN (0,1,99) DO (
  SET PADDED=00%%x
  SET PADDED=!PADDED:~-3!
  magick composite -dissolve %%x -gravity Center "frl1/frame!   PADDED!.png" "frl2/frame!PADDED!.png" -alpha SET "output/!PADDED!.png"
)
pause

(注意:我删除了一个不需要的变量)