簡體   English   中英

使用Node.js將Base64圖像轉換為原始二進制文件

[英]Convert Base64 image to raw binary with Node.js

我發現的帖子與我要查找的內容很接近,但是我無法成功實現所需的內容。 這是一般流程:

  1. 提交帶有其他場所數據的照片,作為base64數據
  2. 刪除數據前綴(如果存在),因此我只有圖像base64數據

var base64data = venue.image.replace(/^data:image\/png;base64,|^data:image\/jpeg;base64,|^data:image\/jpg;base64,|^data:image\/bmp;base64,/, '');

  1. 通過MongoDB將Base64數據存儲在GridFS中(我正在使用gridfstore
  2. 然后,我想根據要求通過URL將圖像檢索為原始圖像文件。

// generic images route
server.get(version+'/images/:id', function(req, res) {
  gridfstore.read( req.params.id, function(error,data) {
    res.writeHead(200, {
      'Content-Type': 'image/jpeg',
      'Content-Length': data.buffer.length
    });

    res.end(data.buffer);
  });
});

基本上,此方法返回存儲在GridFS中的Base64字節。 我嘗試了其他方法,但它們不返回原始圖像。

我想使用如下URL提取圖像:

http://[localhost]/1/images/11dbcef0-257b-11e3-97d7-cbbea10abbcb

這是瀏覽器跟蹤的屏幕截圖: 瀏覽器跟蹤

您可以從MongoDB中獲取字符串,創建新的緩沖區實例,並在執行操作時指定編碼。 結果緩沖區將以二進制數據形式存在。

var b64str = /* whatever you fetched from the database */;
var buf = new Buffer(b64str, 'base64');

因此,在您的實現中:

server.get(version+'/images/:id', function(req, res) {
  gridfstore.read(req.params.id, function(err, data) {
    var img = new Buffer(data.buffer, 'base64');

    res.writeHead(200, {
      'Content-Type': 'image/jpeg',
      'Content-Length': img.length
    });
    res.end(img); 

  });
});

確保您的字符串正確。 這對我有用。

var buf = new Buffer(b64stringhere, 'base64');
var express = require('express'), app = express();
app.get('/img', function(r, s){
    s.end(buf);
})
app.listen(80);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM