qrframe
一款开源的在线二维码生成器,它允许用户自定义数据和外观,生成美观的二维码。
Github地址
https://github.com/zhengkyl/qrframe
在线体验
https://qrframe.kylezhe.ng/
主要特点:
自定义数据:
• 支持编码模式、版本、错误容忍度和掩码模式的自定义。
• 功能由作者自己的 Rust 库 fuqr 提供支持,该库被编译为 WASM 并在浏览器中运行,适用于 Windows 系统。
自定义外观:
• 用户可以选择预设模板,通过代码编辑器自定义或从头开始创建新模板。
• 可以在代码中定义任意的 UI 参数。
• 支持 SVG 和 PNG 格式。
• 所有代码都在浏览器的 Web Worker 中直接运行,没有限制。
• 没有沙箱、白名单、黑名单等限制,除了一个 5 秒的超时机制来阻止无限循环。
• 生成的 SVG 不会进行清理,因为清理 SVG 是不可能的任务,会破坏正常的 SVG,增加调试难度和预览更改的延迟。
• 即使复制粘贴并运行恶意软件,也不会泄露任何秘密。
创建预设:
• 预设必须导出 paramsSchema 和 renderSVG 或 renderCanvas 中的一个。
paramsSchema:
• 这个模式定义了 UI 组件,其值通过 params 对象传递给 renderSVG 或 renderCanvas。
• 除了 type 属性外,所有属性都是可选的,除非:
• type 为 select 时必须有一个非空的选项数组。
• type 为 array 时必须有一个有效的 props 值。
• 示例中默认值被显式设置为隐式默认值。
renderSVG 和 renderCanvas:
• renderSVG 是一个函数,接受一个 QR 对象和一个 params 对象,返回一个字符串。
• renderCanvas 是一个函数,接受一个 QR 对象、一个 params 对象和一个 OffscreenCanvas 对象。
• params 是一个对象,包含 paramsSchema 中所有键和它们各自的输入组件的值。
• QR 对象包含最终的二维码矩阵,表示一个正方形,其中一边宽为版本号乘以 4 加 17,模块(像素)从左到右、从上到下存储。
Qr 类型定义:
• matrix: Uint8Array 类型,表示二维码矩阵。
• version: 版本号,范围从 1 到 40。
• mask: 掩码模式,范围从 0 到 7。
• ecl: 错误校正级别,范围从 0 到 3,分别代表低、中、四分之一、高。
• mode: 编码模式,范围从 0 到 2,分别代表数字、字母数字、字节。
矩阵位标志:
• Module 定义了每个 u8 在矩阵中的位标志,包括:
• ON: 表示模块开启。
• DATA: 表示数据模块。
• FINDER: 表示定位图案。
• ALIGNMENT: 表示对齐图案。
• TIMING: 表示时序图案。
• FORMAT: 表示格式信息。
• VERSION: 表示版本信息。
• MODIFIER: 表示定位图案和对齐图案中心,格式和版本信息的副本。