如何将非常多的选项传递给 ImageMagick?

Wil*_*ken 2 zsh imagemagick

我正在使用 ImageMagick 来合成许多图像。

for counter in {1..$limit}
do
  partial=...
  x=...
  y=...
  convert $canvas
    $partial -geometry "+$x+$y" -composite
    $canvas
done
Run Code Online (Sandbox Code Playgroud)

基本上,我一次一次地放大 N 张图像。

现在我$limit的很小,脚本在合理的时间内运行。但$limit将来会增加到数千张图像。

我正在考虑构建convert命令以一次包含所有部分。然后只运行convert一次。ImageMagick 声称它可以处理 terabit图像没有问题。所以我想一次提供数千个任务应该不是问题。

问题在于 shell 限制了您可以传递给程序的参数数量。我可以以其他方式将所有参数传递给 ImageMagick,比如脚本文件?这是一个坏主意吗?

fil*_*den 6

您可以通过向文件传递@filename参数来传递 ImageMagick 选项,在这种情况下,ImageMagick 将从传递的文件中读取参数。

文档(请参阅“文件参考”部分):

某些 ImageMagick 命令行选项可能超出命令行处理器的能力。例如,Windows 将命令行限制为 8192 个字符。例如,如果您有一个绘制选项的多边形点超过命令行长度限制,请将绘制选项放在文件中,并使用@(例如@mypoly.txt)引用该文件。

因此,该功能专门设计用于限制命令行长度和参数数量的限制。