2014-12-02 76 views
3

我有一个包含许多图像的存储桶,我想从Amazon S3 getObject()方法返回的缓冲区中随时调整它们中的一个,但我可以找不到直接从内存缓冲区调整大小的库。 Thumbbot和Imagemagick从磁盘读取文件,这不是我需要的!图片使用Node.js从亚马逊S3飞行调整大小

这是一个示例代码:

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

我明白任何帮助,由于

+0

处理图像或文件中,我们必须将溶液将文件保留为临时文件,以便我们可以将其删除,我只是想知道它将如何被推翻?如果有任何答案,我会看。 – 2014-12-02 23:26:23

+0

我不认为“使用公羊磁盘”是你想到的答案,尽管它确实很有效地达到了目的。 – 2014-12-03 10:19:09

+0

我找到了解决方案,没有需要使用临时文件 – Ragnar 2014-12-03 18:25:11

回答

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

你让我的一天男人多谢:)它的作品完美:) – 2017-07-18 09:28:25