【问题标题】:child_process.spawn with parenthesis in argumentschild_process.spawn 在参数中带有括号
【发布时间】:2015-02-10 12:55:17
【问题描述】:

我有一个需要在 node.js 中使用的 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',
    '-'
  ];

【问题讨论】:

  • 我不会 speak 节点式,但是反斜杠是为了保护括号不被 shell 解释 - 这里可能没有涉及到 shell而你不需要它们?
  • 问题是我需要他们告诉 image magick 仅将转换应用于 blank.png 图像,而不是来自流的图像。
  • 为什么这会阻止您删除反斜杠?
  • 哦,哇,我现在明白了。我没有在括号里加空格!谢谢!
  • 感谢您的“固定”示例。我的问题是尝试在括号前使用反斜杠转义。

标签: node.js imagemagick


【解决方案1】:

您需要转义转义字符。记住 '\' 在 Javascript 字符串中也有一些含义。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-01
    • 2019-07-02
    • 2014-11-26
    • 1970-01-01
    • 2019-07-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-30
    相关资源
    最近更新 更多