2014-12-02 45 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