本项目迁移自ALI1416/QRCodeEncoder.Net,只编写了生成器部分,并对处理逻辑进行了大量优化,构建后qrcode-encoder.min.js
文件仅16kb
注意:本项目不提供二维码绘制方法,如需绘制请看使用示例
.Net
: ALI1416/QRCodeEncoder.NetJava
: ALI1416/qrcode-encoder
https://unpkg.com/@ali1416/qrcode-encoder/dist/qrcode-encoder.min.js
npm install @ali1416/qrcode-encoder
参数名 | 中文名 | 类型 | 默认值 |
---|---|---|---|
content | 内容 | string | (无) |
level | 纠错等级 | number | 0 |
mode | 编码模式 | number | (自动探测) |
versionNumber | 版本号 | number | (最小版本) |
参数名 | 中文名 | 类型 | 默认值 |
---|---|---|---|
length | 内容字节数 | number | (无) |
level | 纠错等级 | number | (无) |
mode | 编码模式 | number | (无) |
versionNumber | 版本号 | number | (最小版本) |
参数名 | 中文名 | 类型 |
---|---|---|
data | 数据 | boolean[] |
version | 版本 | Version |
level | 纠错等级 | number |
值 | 等级 | 纠错率 |
---|---|---|
0 | L | 7% |
1 | M | 15% |
2 | Q | 25% |
3 | H | 30% |
值 | 模式 | 备注 |
---|---|---|
0 | NUMERIC | 数字0-9 |
1 | ALPHANUMERIC | 数字0-9、大写字母A-Z、符号(空格)$%*+-./: |
2 | BYTE(ISO-8859-1) | 兼容ASCII |
3 | BYTE(UTF-8) |
取值范围:[1,40]
// node test-js.js
const QRCode = require("../dist/qrcode-encoder.js");
const content = "1234😀";
const qr = new QRCode(content);
console.log(QrMatrix2SvgPath(qr.Matrix, 10));
/**
* 二维码boolean[][]转SVG路径
* @param bytes boolean[][]
* @param pixelSize 像素尺寸
* @return string SVG
*/
function QrMatrix2SvgPath(bytes, pixelSize) {
let length = bytes.length;
let size = (length + 2) * pixelSize;
let svg = "<svg width=\"" + size + "\" height=\"" + size + "\" viewBox=\"0 0 " + size + " " + size + "\" xmlns=\"http://www.w3.org/2000/svg\">\n";
svg += "<path d=\"\n";
for (let x = 0; x < length; x++) {
for (let y = 0; y < length; y++) {
if (bytes[x][y]) {
let xx = (x + 1) * pixelSize;
let yy = (y + 1) * pixelSize;
svg += "M" + xx + " " + yy + "H" + (xx + pixelSize) + "V" + (yy + pixelSize) + "H" + xx + "z\n"
}
}
}
svg += "\"/>";
svg += "</svg>\n";
return svg;
}
更多请见测试