私のNode.jsサーバーには、次のようなものがあります。
app.get("/api/id/:w", function(req, res) {
var data = getIcon(req.params.w);
});
ここで、data
は、PNG画像のBase64表現を含む文字列です。これをエンコードして画像として表示されるルートにアクセスするクライアントに送信する方法はありますか(URLをimg
タグで使用できるようにするなど)?
はい、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);
});
私は正しいフォーマットで私のものを得るために最初に少し操作をしなければなりませんでした、しかしこれはうまくいきました:
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);
});