将请求获取数据传入node.js中的graphicsmagick或imagemagick时出错
我正在更改代码以从http get而不是s3对象获取远程映像,并且在数据方面遇到了一些问题。数据不是空的,看起来确实是一个图像二进制文件-但是我是用错误的流格式还是什么-还是向graphicsmagick构造函数发送了无效的格式 我得到了错误将请求获取数据传入node.js中的graphicsmagick或imagemagick时出错,node.js,imagemagick,graphicsmagick,Node.js,Imagemagick,Graphicsmagick,我正在更改代码以从http get而不是s3对象获取远程映像,并且在数据方面遇到了一些问题。数据不是空的,看起来确实是一个图像二进制文件-但是我是用错误的流格式还是什么-还是向graphicsmagick构造函数发送了无效的格式 我得到了错误 { [Error: Command failed: identify: unable to open image `����': No such file or directory @ error/blob.c/OpenBlob/2701. identif
{ [Error: Command failed: identify: unable to open image `����': No such file or directory @ error/blob.c/OpenBlob/2701.
identify: no decode delegate for this image format `' @ error/constitute.c/ReadImage/501.
] code: 1, signal: null }
使用下面的代码
var request = require('request');
var gm = require('gm').subClass({imageMagick: true}); // Enable ImageMagick integration.
var imageType = require('image-type');
request('http://c3.diapers.com/images/products/p/PG/PG-418_1z.jpg', function(error, response, body) {
if (error) {
console.error('unable to download image ' + err);
return res.status(404).send('unable to download image ' + err);
}
if (!body)
return res.status(404).send('no body response for image');
var original = gm(body);
original.size(function (err, size) {
if (err) {
console.error(err);
return res.status(500).send(err);
}
resize_photo(size, targetSize, original, function (err, photo) {
res.setHeader('Content-Type', 'image/jpeg');
res.send(photo);
});
});
});
所以问题是数据是以字符串而不是二进制的形式返回的。我必须在请求选项中设置encoding:null,然后它就开始工作了