外观主题
阅读语言

CQRC —— 从零实现的彩色二维码生成库

软件 本站软件 3天前 更新于 21小时前
https://yxp.hk/p/PaHDk2

📦 开源仓库:yxpil/CQRC


CQRC · 彩色二维码 SDK

从零实现的彩色(Colored / Stylized)QR Code 生成库,不依赖任何第三方组件。
同时提供 C#(Cqrc.Sdk,net8.0 / net10.0)与 纯 JavaScript(js/cqrc.js,零依赖,浏览器与 Node 通用)两份等价实现。

覆盖标准:QR 2000(ISO/IEC 18004)编码 + GF(2⁸) Reed-Solomon 纠错 + ISO/IEC 21570 扩展元数据。

特性

能力 说明
完整 QR 2000 编码 数字 / 字母数字 / 字节(UTF-8)三种模式,版本 1–40,L·M·Q·H 四档纠错
数据段优化 Optimize / optimize 开关,按最长数字串→字母数字串→字节贪心切分,与 python-qrcode optimize=4 逐位一致
掩码自动选择 8 种掩码全量试算,按 ISO 罚分取优
彩色与造型 纯色 / 线性渐变前景、模块圆角、整码圆角、圆形定位标记区(CircularFinders)、中央 Logo 叠加
ISO/IEC 21570 元数据 在数据段之后追加扩展段(品牌、内容哈希等 JSON 键值),可自动写入 content_hash(SHA-256)
多格式输出 C#:PNG(手写 zlib/CRC)、SVG、PDF(矢量单页)、裸位图;JS:SVG、Canvas / DataURL
跨语言一致性 C# 与 JS 对同一输入产出逐模块完全相同的矩阵,均有自动化测试保证

仓库结构

Cqrc.Sdk/          C# 类库(无第三方依赖)
  QrEncoder.cs       比特流 → RS 分块 → 交错码字
  QrMatrixBuilder.cs 固定图形 + 之字形数据放置 + 掩码选择
  MaskScoring.cs     ISO 罚分(规则 1–4)
  QrTables.cs        RS 块表 / 对齐图形坐标 / 长度位宽
  Gf256.cs GfPoly.cs ReedSolomon.cs   GF(2⁸) 与 RS 运算
  QrBch.cs           格式信息 / 版本信息的 BCH 编码
  Metadata/Iso21570.cs
  Rendering/         QrRenderer(PNG) · SvgRenderer · PdfRenderer
Cqrc.Sample/       生成 PNG / SVG / PDF 示例(输出在 Cqrc.Sample/qr_*.*)
Cqrc.Demo/         诊断工具:打印分段、8 种掩码罚分与矩阵文本
Cqrc.Sdk.Tests/    xUnit:与 python-qrcode 黄金向量 vectors.json 逐模块比对
js/cqrc.js         纯 JS 等价实现(UMD,零依赖)
js/test.js         Node 自测:SHA-256 / RS / 结构 / 与同一份黄金向量比对

快速开始

C#

using Cqrc;
using Cqrc.Rendering;

var code = new CqrcCode { ErrorCorrection = ErrorCorrectionLevel.H };
code.Style.ForegroundColor  = "#0066CC";
code.Style.ForegroundColor2 = "#66CCFF";   // 给出第二色即启用线性渐变
code.Style.ModuleRounding   = 0.3;         // 模块圆角
code.Style.CircularFinders  = true;        // 圆形定位标记区
code.Style.Metadata = new Diction