webentwicklung-frage-antwort-db.com.de

Rendern eines Base64-PNG mit Express

Mein Node.js-Server hat etwas, das wie folgt aussieht:

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

Hier ist data eine Zeichenfolge, die eine Base64-Darstellung eines PNG-Bildes enthält. Gibt es eine Möglichkeit, wie ich dies an einen Client senden kann, der auf die codierte und als Bild dargestellte Route zugreift (z. B. damit die URL in einem img-Tag verwendet werden kann)?

15
Hydrothermal

Ja, Sie können Ihren base64-String kodieren und als Image an den Client zurückgeben:

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

Ich musste zuerst ein wenig manipulieren, um meine im richtigen Format zu erhalten, aber das hat gut funktioniert:

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