2015-02-10 8 views
12

serwer My node.js ma coś, co wygląda tak:Renderowanie Base64 PNG z Express,

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

Tutaj data jest ciągiem zawierającym reprezentacji Base64 z obrazu PNG. Czy istnieje sposób, w jaki mogę wysłać to do klienta uzyskującego dostęp do zakodowanej trasy i wyświetlanej jako obraz (np. Adres URL może być użyty w tagu img)?

+0

Jaki obraz jest? Aby wysłać go do klienta, musisz wiedzieć, jaki typ zawartości to obraz (JPEG, PNG, GIF, ICO)? – loganfsmyth

+0

To jest PNG; Zmieniłem moje pytanie, aby o tym wspomnieć. – Hydrothermal

Odpowiedz

23

Tak można zakodować swój ciąg base64 i odesłać go do klienta w postaci obrazu:

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); 
}); 
+1

'var img = new Buffer (data, 'base64');' – lujcon

+0

To jest dokładnie to, czego potrzebowałem! Zastąpiłem 'data.buffer' przez' dane' jak na komentarz @ lujcon i działa idealnie. – Hydrothermal