我正在编写一个应用程序,以便将this library用于通用图像大小调整实用程序
让它使用本地文件,尝试使用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)
)
这是错误的:
{ [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 }
这让我觉得它在将Buffer识别为jpg对象时遇到了麻烦。但即使我在选项哈希中明确地将缓冲区声明为jpg,它仍然会给我同样的错误:
taskHash = {
srcPath: "-"
srcData: body
dstPath: "-"
format: 'jpg'
height: 100
}
不确定如何将其作为正确的Buffer对象传递。
答案 0 :(得分:2)
错误消息表示它不知道图像的格式。根据{{3}},您可以在srcPath
参数中指定格式,例如gif:-
。
查找HTTP响应格式的最佳方法是在Content-Type
标头中,因为它可能不是网址的一部分。