QR 代码样式
JavaScript库用于生成带有标志和样式的QR代码.
试试看 https://qr-code-styling.com (中文(简体) )
如果您有问题/建议/说明/问题,请开始讨论或联系我。 让我们一起创建一个很酷的图书馆.
实例
安装
npm install qr-code-styling
使用量
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>QR Code Styling</title>
<script type="text/javascript" src="https://unpkg.com/[email protected]/lib/qr-code-styling.js"></script>
</head>
<body>
<div id="canvas"></div>
<script type="text/javascript">
const qrCode = new QRCodeStyling({
width: 300,
height: 300,
type: "svg",
data: "https://www.facebook.com/",
image: "https://upload.wikimedia.org/wikipedia/commons/5/51/Facebook_f_logo_%282019%29.svg",
dotsOptions: {
color: "#4267b2",
type: "rounded"
},
backgroundOptions: {
color: "#e9ebee",
},
imageOptions: {
crossOrigin: "anonymous",
margin: 20
}
});
qrCode.append(document.getElementById("canvas"));
qrCode.download({ name: "qr", extension: "svg" });
</script>
</body>
</html>
API 文档
QRCodeStyling 实例
new QRCodeStyling(options) => QRCodeStyling
| 参数 | 类型 | 说明 |
|---|---|---|
| 选项 | 对象 | Init 对象 |
options 结构
| 财产 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| 宽度 | 编号 | 300 | 画布大小 |
| 高度 | 编号 | 300 | 画布大小 |
| 类型 | 字符串( r)'canvas' 'svg'(中文(简体) ) | canvas | 将生成的元素类型 |
| 数据 | 字符串 | 日期将被编码为 QR 代码 | |
| 图像 | 字符串 | 图像将被复制到 QR 代码的中心 | |
| 边距 | 编号 | 0 | 画布边缘 |
| qr 选项 | 对象 | 选项将传递给 qrcode-generator 独立 | |
| 图像选项 | 对象 | 特定图像选项,详情见下文 | |
| 点选项 | 对象 | 点样式选项 | |
| 角平方选项 | 对象 | 角落的平面样式选项 | |
| 角点选项帮助工具 | 对象 | 角落中的点样式选项 | |
| 背景选项 | 对象 | QR 背景样式选项 | |
| 节点 | 节点扫描 | 只指定在节点服务器上运行画布类型时, 请参考下面的节点区域 | |
| jsdom (英语) | 日记 | 仅在节点服务器上运行 svg 类型时指定, 请参考下面的节点部分 |
options.qrOptions 结构
| 财产 | 类型 | 默认值 |
|---|---|---|
| 类型数 | 编号(0 - 40(中文(简体) ) | 0 |
| 模式 | 字符串( r)'Numeric' 'Alphanumeric' 'Byte' 'Kanji'(中文(简体) ) | |
| 错误更正级别 | 字符串( r)'L' 'M' 'Q' 'H'(中文(简体) ) | 'Q' |
options.imageOptions 结构
| 财产 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| 隐藏背景 | 布尔 | true | 隐藏图像覆盖的所有点 |
| 图像大小 | 编号 | 0.4 | 图像大小的系数 。 不建议使用 ove 0.5. 低点更好 |
| 边距 | 编号 | 0 | Px 图像的边距 |
| 横跨奥里金 | 字符串( r)'anonymous' 'use-credentials'(中文(简体) ) | 如果您想要从其它来源下载QR代码, 请设置"匿名" . | |
| 保存 AsBlob 数据 | 布尔 | false | 在 svg 类型中将图像保存为 Base64 blob, 参见 Bellow |
当 QR 类型是 svg 时, 图像可能不会在某些应用程序中加载, 因为它被保存为 url , 一些 svg 应用程序不会出于安全原因渲染 url 图像 。 设置 saveAsBlob 到 true 将会将图像保存为 blob, 让它在更多地方正确渲染, 但也会增加文件大小 .
options.dotsOptions 结构
| 财产 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| 颜色 | 字符串 | '#000' | QR 点的颜色 |
| 渐变 | 对象 | QR 点的渐变 | |
| 类型 | 字符串( r)'rounded' 'dots' 'classy' 'classy-rounded' 'square' 'extra-rounded'(中文(简体) ) | 'square' | QR 点样式 |
options.backgroundOptions 结构
| 财产 | 类型 | 默认值 |
|---|---|---|
| 颜色 | 字符串 | '#fff' |
| 渐变 | 对象 |
options.cornersSquareOptions 结构
| 财产 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| 颜色 | 字符串 | 角落平面颜色 | |
| 渐变 | 对象 | 角广场的梯度 | |
| 类型 | 字符串( r)'dot' 'square' 'extra-rounded'(中文(简体) ) | 角落广场样式 |
options.cornersDotOptions 结构
| 财产 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| 颜色 | 字符串 | 角点颜色 | |
| 渐变 | 对象 | 角点的渐变 | |
| 类型 | 字符串( r)'dot' 'square'(中文(简体) ) | 角点样式 |
渐变结构
options.dotsOptions.gradient
options.backgroundOptions.gradient
options.cornersSquareOptions.gradient
options.cornersDotOptions.gradient
| 财产 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| 类型 | 字符串( r)'linear' 'radial'(中文(简体) ) | "线" | 梯度分布类型 |
| 旋转 | 编号 | 0 个 | 弧度梯度的旋转(Math.PI QQ 180度) |
| 颜色停止 | 对象数组 | 渐入色相. 示例 [{ offset: 0, color: 'blue' }, { offset: 1, color: 'red' }] |
渐变颜色停止结构
options.dotsOptions.gradient.colorStops[]
options.backgroundOptions.gradient.colorStops[]
options.cornersSquareOptions.gradient.colorStops[]
options.cornersDotOptions.gradient.colorStops[]
| 财产 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| 页:1 | 编号(0 - 1(中文(简体) ) | 颜色在梯度范围内的位置 | |
| 颜色 | 字符串 | 渐变范围内的站点颜色 |
QRCode 定型方法
QRCodeStyling.append(container) => void
| 参数 | 类型 | 说明 |
|---|---|---|
| 集装箱 | DOM 元素 | 此容器将用于附加 QR 代码 |
QRCodeStyling.getRawData(extension) => Promise<Blob>
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| 扩展 | 字符串( r)'png' 'jpeg' 'webp' 'svg'(中文(简体) ) | 'png' | 浏览器上的 Blob 类型, 节点上的缓冲类型 |
QRCodeStyling.update(options) => void
| 参数 | 类型 | 说明 |
|---|---|---|
| 选项 | 对象 | 与初始化相同的选择 |
QRCodeStyling.download(downloadOptions) => Promise<void>
| 参数 | 类型 | 说明 |
|---|---|---|
| 下载选项 | 对象 | 有扩展名和文件名称的选项( 不需要) |
返回的承诺将解析入 QR 代码图像的数据 URI .
downloadOptions 结构
| 财产 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| 名称 | 字符串 | 'qr' | 下载文件的名称 |
| 扩展 | 字符串( r)'png' 'jpeg' 'webp' 'svg'(中文(简体) ) | 'png' | 文件扩展名 |
节点支持
您可以在节点服务器上通过节点- canvas 或 jsdom 对象使用此功能, 取决于您是否分别创建非 svg 或 svg 。 使用时必须同时通过 imageOptions.saveAsBlob。 。 。 .
通话 getRawData 在节点中,将返回一个缓冲器而不是一个 Blob.
const { QRCodeStyling } = require("qr-code-styling/lib/qr-code-styling.common.js");
const nodeCanvas = require("canvas");
const { JSDOM } = require("jsdom");
const fs = require("fs");
const options = {
width: 300,
height: 300,
data: "https://www.facebook.com/",
image: "https://upload.wikimedia.org/wikipedia/commons/5/51/Facebook_f_logo_%282019%29.svg",
dotsOptions: {
color: "#4267b2",
type: "rounded"
},
backgroundOptions: {
color: "#e9ebee",
},
imageOptions: {
crossOrigin: "anonymous",
margin: 20
}
}
// For canvas type
const qrCodeImage = new QRCodeStyling({
nodeCanvas, // this is required
...options
});
qrCodeImage.getRawData("png").then((buffer) => {
fs.writeFileSync("test.png", buffer);
});
// For svg type
const qrCodeSvg = new QRCodeStyling({
jsdom: JSDOM, // this is required
type: "svg",
...options
});
qrCodeSvg.getRawData("svg").then((buffer) => {
fs.writeFileSync("test.svg", buffer);
});
// For svg type with the inner-image saved as a blob
// (inner-image will render in more places but file will be larger)
const qrCodeSvgWithBlobImage = new QRCodeStyling({
jsdom: JSDOM, // this is required
nodeCanvas, // this is required
type: "svg",
...options,
imageOptions: {
saveAsBlob: true,
crossOrigin: "anonymous",
margin: 20
}
});
qrCodeSvgWithBlobImage.getRawData("svg").then((buffer) => {
fs.writeFileSync("test_blob.svg", buffer);
});
许可证
MIT 许可证. 版权 (c) 2021 Denys Kozak