web-dev-qa-db-ja.com

ExpressでBase64 PNGをレンダリングする

私のNode.jsサーバーには、次のようなものがあります。

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

ここで、dataは、PNG画像のBase64表現を含む文字列です。これをエンコードして画像として表示されるルートにアクセスするクライアントに送信する方法はありますか(URLをimgタグで使用できるようにするなど)?

18
Hydrothermal

はい、base64文字列をエンコードして、画像としてクライアントに返すことができます。

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); 
});
59
Ben Diamant

私は正しいフォーマットで私のものを得るために最初に少し操作をしなければなりませんでした、しかしこれはうまくいきました:

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

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

});
0
gts