在ImageMagick中“过多参数”中运行“蒙太奇”功能时出错?

时间:2019-03-14 16:03:38

标签: ruby imagemagick imagemagick-montage

我试图直接通过ruby脚本在ImageMagick中运行带有大量参数(264)的montage函数。这是调用函数的行:

montage -mode concatenate -tile #{x_tiles}x#{y_tiles} #{tempfiles.map{|t| t.path}.join(' ')} #{final_filename}.jpg

这适用于较少数量的参数(例如10个),但是当我尝试以较大的数量(230〜)运行它时,出现以下错误:

Argument list too long {所有参数的列表} (Errno: :E2BIG)

我正在使用Windows,因此我同时尝试了PowerShell和CMD,并得到了相同的错误。

在以红宝石或其他方式(例如,通过遍历)编辑命令时,是否可以克服此问题? 我试图更改文件here的结尾,但是语法不正确。

1 个答案:

答案 0 :(得分:1)

要做的一件事是在运行命令字符串之前检查其长度。 如果太长,对于您所处的系统,可能需要将其分解为较小的块。

根据Microsoft Support

,在不知道运行时间的情况下
  

在运行Microsoft Windows XP或更高版本的计算机上,可以在命令提示符下使用的字符串的最大长度为8191个字符。在运行Microsoft Windows 2000或Windows NT 4.0的计算机上,可以在命令提示符下使用的字符串的最大长度为2047个字符。

Linux的命令长度也有限制。参见"Argument list too long": Beyond Arguments and Limitations

在Linux上,您可以重新编译内核以增加页面大小,但在Windows上则没有这样的选择。