2015-02-10 79 views
1

我有一個imagemagick腳本,我需要在節點中使用。它適用於child_process.exec函數。我不確定如何將它發送給exec命令,所以我試圖使用產卵。child_process.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', 
    '-' 
    ]; 
+0

我不*說* node-ish,但反斜槓是爲了保護括號不被shell解釋 - 是否有可能在這裏沒有涉及的shell,並且你不需要它們? – 2015-02-10 13:27:24

+0

問題是我需要他們告訴圖像magick將轉換僅應用於blank.png圖像,而不是從流中傳入的圖像。 – 2015-02-10 13:36:00

+0

爲什麼這會阻止你刪除反斜槓? – 2015-02-10 13:52:21

回答

1

你需要躲避轉義字符。記住'\'的含義也是在Javascript字符串中。

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