使用 Express 渲染 Base64 PNG

Rendering a Base64 PNG with Express

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

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

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

是的,您可以对 base64 字符串进行编码,然后 return 将其作为图像发送给客户端:

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

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

我必须先做一些操作才能使我的格式正确,但这很有效:

  var base64Data = data.replace(/^data:image\/png;base64,/, '');

使用 "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);

});