Node.js生成二维码插件
- qr-image
- qrcode
qr-image
qr-image是Node.js平台的二维码生成器,支持UTF-8,生成图片格式包括png、svg、eps、pdf。
$ npm i -S qr-image
载入
const qr = require("qr-image");
生成图片二维码,返回字符串形式的图片数据。
qr.image(text, [ec_level | options])
qr.imageSync(text, [ec_level | options])
参数 | 描述 |
---|---|
text | 二维码文本内容 |
ec_level | 容错率水平,可选L(低)、M(中)、Q(高)、H(最高),默认为M(中)。 |
options | 图片选项,对象格式。 |
图片选项 | 描述 |
---|---|
ec_level | 容错率水平,默认为M中等。 |
type | 图片类型,可选值png、svg、pdf、eps,默认png。 |
size | 图片大小,仅限png和svg图片。默认为5。 |
margin | 空白外间距像素值,默认为1。 |
customize | 仅限png |
parse_url | - |
生成图片二维码并写入文件
const qr = require("qr-image");
const fs = require("fs");
exports.user = async (ctx, next)=>{
const text = ctx.query.text;
//获取二维码图片地址
let imgbuf;
const filepath = `public/qr/${text}.png`;
if(fs.existsSync(filepath)){
imgbuf = fs.readFileSync(filepath);
}else{
try{
imgbuf = qr.image(text||"", {type:"png"});
const stream = fs.createWriteStream(filepath);//todo create write fail
imgbuf.pipe(stream);
}catch(e){
ctx.status = 414;
ctx.set("Content-Type", "text/html");
ctx.body = ("414 Request-URI Too Large");
}
}
ctx.status = 200;
ctx.type = "image/png";
ctx.body = imgbuf;
};