2014-09-06 2 views
0

Я пишу приложение использовать this library в общее назначении изменения размеров изображений утилитыпередать объект буфера в библиотеку ImageMagick правильно

он работает с локальными файлами, пытаясь обновить его с HTTP потоками.

Похоже, что в теории его оболочка resize примет объект srcData, который, как я полагаю, может быть объектом Buffer, но мое приложение задыхается.

Вот упрощенная версия:

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) 

) 

Это erroring из:

{ [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

Смежные вопросы