child_process.spawn带括号的参数

我有一个imagemagick脚本,我需要在节点中使用。 它与child_process.exec函数工作正常。 我不知道如何发送一个stream到exec命令,所以我试图使用产卵。

这工作正常。 没问题。

var spawn = require('child_process').spawn; var args = [ '-', '-resize', '50%', './blank.png', '-composite', '-' ]; var convert = spawn('convert', args); 

现在问题是我需要分开blank.png图像,并应用转换。 Image Magick没有问题。 http://www.imagemagick.org/Usage/basics/#parenthesis

所以开始使它看起来像这样。

  convert image.jpg \ \( blank.png -resize 50% \) -gravity center -composite -composite output.jpg 

我不能用nodejs中的spawn参数来解决这个问题。 我尝试过这样的事情。

  var args = [ '-', '\( ', './blank.png', '-resize', '50%', ' \), '-composite', '-' ]; var args = [ '-', '( ', './blank.png', '-resize', '50%', ' ), '-composite', '-' ]; var args = [ '-', '\( ./blank.png -resize 50% \)', '-composite', '-' ]; 

似乎没有任何工作。 他们都把错误的parameter passing给函数。 我只是得到转换错误。 有任何想法吗?

固定

  var args = [ '-', '-resize', '100%', '(', './blank.png', '-resize', '50%', ')', '-composite', '-' ]; 

你需要逃避转义字符。 记住'\'的意思是在Javascriptstring中的东西。

  var args = [ '-', '\\( ', './blank.png', '-resize', '50%', '\\)', '-composite', '-' ]; var convert = spawn('convert', args);