child_process.spawn,参数中带括号

时间:2015-02-10 12:55:17

标签: node.js imagemagick

我有一个我需要在节点中使用的imagemagick脚本。它与child_process.exec函数一起正常工作。我不确定如何将它发送到exec命令,所以我试图使用spawn。

这很好用。没问题。

  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 args来完成工作。 我尝试了类似的事情。

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

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


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

似乎没什么用。它们都将错误的参数传递给函数。我只是得到转换错误。有什么想法吗?

固定

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

1 个答案:

答案 0 :(得分:1)

您需要转义转义字符。记住' \'也意味着Javascript字符串中的内容。

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