2014-09-06 38 views
0

我正在寫一個應用程序能夠利用this library成通用圖像縮放工具傳遞的緩衝區對象到ImageMagick庫正確

有它使用本地文件,試圖與HTTP流進行更新。

看起來像在理論上它的resize包裝將採取srcData對象,我認爲它可以是一個緩衝區對象,但我的應用程序窒息。

下面是一個簡化版本:

im = require('imagemagick') 
request = require('request') 

sampleImage = "http://www.ibm.com/developerworks/data/library/techarticle/dm-0504stolze/test_1.jpg" 

request.get(sampleImage, (err, res, body) -> 

    taskHash = { 
     srcPath: "-" 
     srcData: body 
     dstPath: "-" 
     height: 100 
    } 

    callback = (err, stdout, stderr)-> 
     if err 
      console.error(err) 
      process.exit(1) 
     console.log(stdout) 

    im.resize(taskHash, callback) 

) 

這示數出來:

{ [Error: Command failed: convert: no decode delegate for this image format `/var/tmp/magick-37627o1E7kWz7yGaf' @ error/constitute.c/ReadImage/555. 
convert: no images defined `-' @ error/convert.c/ConvertImageCommand/3144. 
] timedOut: false, killed: false, code: 1, signal: null } 

這讓我覺得它有確定的緩衝區作爲一個jpg對象的麻煩。但是,即使我明確地聲明該緩衝區作爲選項散列JPG格式,但它仍然給了我同樣的錯誤:

taskHash = { 
    srcPath: "-" 
    srcData: body 
    dstPath: "-" 
    format: 'jpg' 
    height: 100 
} 

不知道如何通過這一個正確的緩衝區對象。

回答

2

錯誤消息是說它不知道圖像的格式。根據the ImageMagic docs,您可以指定srcPath參數中的格式,例如gif:-

查找HTTP響應格式的最佳方法是在Content-Type標題中,因爲它可能不是url的一部分。

+0

'srcPath'前綴工作,我猜'format'選項只能指定輸出。 – fox 2014-09-06 03:37:47