@charles-goode/qr-code-styling

中文文档
1.6.2发布于 2021/06/24MITTypeScriptCommonJS近 30 天下载 2009

在您的QR 代码中添加样式和图像

中文使用文档
文档目录6 节
  1. 实例
  2. 安装
  3. 使用量
  4. API 文档
  5. 节点支持
  6. 许可证

QR 代码样式

Version

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>

反应实例 (Codesandbox)

角实例( Codesandbox)


反应实例( 来源)

角实例( 来源)

Vue 实例( 来源)


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. 低点更好
边距编号0Px 图像的边距
横跨奥里金字符串( 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

版本与发布记录

@charles-goode/qr-code-styling 共发布 3 个版本,首次发布于 2021/06/23;过去 12 个月发布了 0 个版本。

版本发布日期距今
1.6.2latest2021/06/245 年前
1.6.12021/06/235 年前
1.6.02021/06/235 年前

关于 @charles-goode/qr-code-styling 的常见问题

@charles-goode/qr-code-styling 是什么?

在您的QR 代码中添加样式和图像

如何安装 @charles-goode/qr-code-styling?

在项目目录运行 npm install @charles-goode/qr-code-styling,或使用 pnpm add / yarn add / bun add。

@charles-goode/qr-code-styling 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@charles-goode/qr-code-styling 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@charles-goode/qr-code-styling 可以商用吗?

@charles-goode/qr-code-styling 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@charles-goode/qr-code-styling 的下载量有多少?

根据 npm 官方下载统计,@charles-goode/qr-code-styling 在 2026/10/10 – 2026/11/08 这 30 天内被下载 2,009 次,日均约 67 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@charles-goode/qr-code-styling 还在维护吗?

最新版本 1.6.2 发布于 2021/06/24(5 年前);至今共发布 3 个版本,其中过去 12 个月发布了 0 个;首次发布于 2021/06/23。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。