ロゴ入り QR コード生成を Cloud Functions で #
QR コード生成サービスとかたくさんあるし、なんなら大昔から自分で設置したり してるわけで、なんで今さらって
- 今風にロゴいれて
- 今風にサーバレスで
n
やってみたかったのです。
色々試した結果、ライブラリは @ushelp/EasyQRCodeJS-NodeJS
を利用させていただこうかと。
Node.js + Cloud Functions は、大変お手軽でいいですね。
2021/11/29 追記: png 出力するサンプルも追加
'use strict';
const QRCode = require('easyqrcodejs-nodejs');
exports.generate = (req, res) => {
let txt = req.query.q || req.body.q || 'https://d3.haro.jp/';
let imageString = 'data:image/png;base64,iVBOR.....';
let qr = new QRCode({
text: txt,
correctLevel : QRCode.CorrectLevel.H,
logo: imageString
});
//res.status(200).set('Content-Type', 'text/plain').send(txt);
qr.toSVGText().then( data => {
res.status(200).set('Content-Type', 'image/svg+xml').send(data);
});
};
exports.png = (req, res) => {
let txt = req.query.q || req.body.q || 'https://d3.haro.jp/';
let imageString = 'data:image/png;base64,iVBOR.....';
let qr = new QRCode({
text: txt,
correctLevel : QRCode.CorrectLevel.H,
width: 300,
height: 300,
logo: imageString,
logoWidth: 90,
logoHeight: 90
});
qr.toStream().then( data => {
data.pipe(res);
});
};