传入请求时出错将数据导入node.js中的graphicsmagick或imagemagick

时间:2015-11-30 16:14:22

标签: node.js imagemagick graphicsmagick

我正在更改我的代码以从http get而不是s3对象获取远程图像并且在数据方面遇到一些问题。数据不是空的,似乎是一个图像二进制文件 - 但我发送错误的流格式或其他东西 - 或者将无效格式发送到graphicsmagick构造函数?

我收到错误

   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);
            });
        });

    });

使用以下代码

module.exports = {
   ...
   entry: "./webpack-entry-module.js",
   ...
}

1 个答案:

答案 0 :(得分:0)

所以问题是数据以字符串而不是二进制形式返回。我必须在请求选项中设置encoding:null,然后它才能工作。

Getting binary content in Node.js using request