图像使用Node.js从Amazon S3动态调整大小

时间:2014-12-02 22:59:41

标签: javascript node.js image-processing amazon-s3

我有一个包含许多图像的存储桶,我想从Amazon S3 getObject()方法返回的缓冲区中动态调整其中一个,但是我找不到直接调整大小的库从内存缓冲区。 Thumbbot和Imagemagick从磁盘读取文件,这不是我需要的!

这是一个示例代码:

exports.resizeImage = function(req, res) {
    bucket.getObject({Key: 'image.jpg'}, function(err, data){
        if (err) throw err;
        var image = resizeImage(data.Body);//where resize image is a method or a library that I need to call
        res.writeHead(200, {'Content-Type': data.ContentType });
        res.end(image); //send a resized image buffer
    });
};

我感谢任何帮助,谢谢

1 个答案:

答案 0 :(得分:4)

我找到了使用gm库的节点js

的解决方案
var gm = require('gm').subClass({ imageMagick: true });

exports.resizeImage = function(req, res) {
    bucket.getObject({Key: 'image.jpg'}, function(err, data){
        if (err) throw err;
        gm(data.Body, 'ok.jpg')
            .size({bufferStream: true}, function(err, size) {
                this.resize(200, 200);
                this.toBuffer('JPG',function (err, buffer) {
                    if (err) return handle(err);
                    res.writeHead(200, {'Content-Type': data.ContentType });
                    res.end(buffer);
                });
            });
    });
};