使用Express渲染Base64 PNG

Hyd*_*mal 17 javascript base64 image node.js express

我的Node.js服务器有如下内容:

app.get("/api/id/:w", function(req, res) {
    var data = getIcon(req.params.w);
});
Run Code Online (Sandbox Code Playgroud)

data是一个包含PNG图像的Base64表示的字符串.有没有什么办法可以将它发送给访问编码和显示为图像的路由的客户端(例如,URL可以用在img标签中)?

Ben*_*ant 51

是的,您可以编码base64字符串并将其作为图像返回到客户端:

server.get("/api/id/:w", function(req, res) {
    var data = getIcon(req.params.w);
    var img = new Buffer(data, 'base64');

   res.writeHead(200, {
     'Content-Type': 'image/png',
     'Content-Length': img.length
   });
   res.end(img); 
});
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,效果很好,除了不推荐使用新的Buffer(data,'base64')...而是使用Buffer.from(data,'base64') (3认同)
  • `var img = new Buffer(data, 'base64');` (2认同)

Jay*_*ler 8

为了使我的格式正确,我必须首先进行一些操作,但是效果很好:

  var base64Data = data.replace(/^data:image\/png;base64,/, '');
Run Code Online (Sandbox Code Playgroud)

  • 您还可以使用 var base64Data = data.split(',')[1]` (2认同)

gts*_*gts 7

使用“base64-img”组件:

app.get('/image1', function(req, res) {

  var image1 = 'image1.jpg';

  var base64Img = require('base64-img');
  var imageData1 = base64Img.base64Sync(image1);
  var base64Data = imageData1.replace(/^data:image\/(png|jpeg|jpg);base64,/, '');
  var img = Buffer.from(base64Data, 'base64');

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

});
Run Code Online (Sandbox Code Playgroud)