Skip to content
ChengYan-3721Public

About

No description, website, or topics provided.

Resources

Stars

55 stars

Watchers

0 watching

Forks

Latest commit

 

History

19 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

QRacer 摹码

logo

QRacer 是一个面向柔印印前工作的 Windows 桌面工具,用于把二维码、条码截图、拍照图或屏幕局部截图还原成可用于制版的 SVG 矢量文件。

它的目标不是“能扫码就行”,而是尽量让码点位置与原图保持 1:1 几何一致。应用会在导入后自动识别、校正、采样并生成预览,用户可以通过左右对比和差异高亮检查结果,再导出 SVG 或复制 SVG 文本到剪贴板后粘贴进 Illustrator。

🌟功能特性

  • 支持从剪贴板粘贴图片、打开本地图片、拖放图片到窗口、框选截屏导入。
  • 自动识别二维码、一维条码、Data Matrix 码、微信小程序码和抖音码。
  • 支持手动指定码类型,避免自动识别误判。
  • 支持左右对比、差异高亮和状态栏差异数量提示。
  • QR、一维条码和 Data Matrix 支持自定义生成;已解码内容会自动带入数据区并实时生成。
  • 自定义生成会按码类型过滤字符、限制数据长度,并为 EAN/UPC 等零售条码自动计算校验位。
  • 支持导出 SVG 文件,也支持直接复制 SVG 文本到剪贴板。
  • QR、Data Matrix、小程序码和抖音码均提供手动校准入口,用于校正不稳定的拍照图。
  • 纯 Rust 实现,不依赖 OpenCV,目标是轻量单文件分发。

🐴支持的码类型

码类型 处理策略 说明
二维码 (QR) 解码重生成 + 8 掩膜对比;失败时网格像素匹配 支持标准、微信、小红书等外观输出
一维条码 解码后按候选编码重生成;全部不匹配时一维网格采样 支持 Code 128/39/93、EAN-13/8、UPC-A/E、ITF、Codabar;输出静区、加长守护条和人眼可读文字
Data Matrix 码 解码后依次尝试传统、Compact、C40 和原始码字重建;全部不匹配时网格采样 支持 ECC 200 方形/矩形符号,保留回车、空格、Tab、FNC、Macro 等隐藏数据
微信小程序码 径向网格采样 私有协议,仅做几何还原
抖音码 同心圆网格采样 私有协议,仅做几何还原

🛖环境要求

  • Windows。
  • Rust 2024 edition 对应的稳定工具链。

安装 Rust 后,在项目根目录运行:

cargo run

发布构建:

cargo build --release

生成的可执行文件位于:

target/release/qracer.exe

🚀快速使用

  1. 启动程序后,用以下任一方式导入图片:

    • 点击 粘贴 (Ctrl+V) 或直接按 Ctrl+V 粘贴剪贴板图片。
    • 点击 打开... 选择 PNG/JPG/BMP/WebP 等图片。
    • 从资源管理器把图片拖到程序窗口,松开鼠标后自动读取。
    • 点击 截屏,框选屏幕中的码图区域。
  2. 等待自动处理完成。左侧显示原图,右侧显示矢量化结果或差异预览,状态栏会显示识别结果、模块/像素差异等信息。

  3. 如识别错误,可在工具栏 码类型 下拉框中改为手动类型,然后重新处理当前图片。

  4. 检查结果:

    • QR 可切换 0-7 掩膜、自动选最佳,或使用 网格像素匹配。
    • 一维条码会显示实际采用的解码重建或一维网格采样路径;EAN-13 会按原图判断右侧 > 静区标记。
    • Data Matrix 会显示传统、最短路径、C40、原始码字重建或网格像素匹配中的实际命中路径。
    • Data Matrix、小程序码、抖音码可勾选 显示差异。
    • 差异颜色含义:红色表示原图有而生成图没有,蓝色表示原图没有而生成图有。
  5. 如果拍照图自动校正不准,点击 手动校准:

    • 拖动整图移动。
    • 拖动边框或边中点小方块做水平/垂直缩放。
    • 拖动四角做缩放;按住 Shift 拖边框或四角可等比例缩放。
    • 按住 Ctrl 拖动四角才做自由透视变换。
    • 用滚轮微调缩放。
    • 用旋转手柄或 逆时针 1° / 顺时针 1° 微调。
    • QR 可在弹窗内选择版本;Data Matrix 可选择 ECC 200 符号尺寸;抖音码可选择无框版/黑框版参考线。
    • 可用 Ctrl+Z 或 撤销 回退。
    • 对齐参考线后点击 应用校准 重新采样。
  6. 确认结果后:

    • 点击 导出 SVG 保存文件。
    • 或点击 复制到剪贴板,再到 Illustrator 中粘贴为矢量对象。

✍️自定义生成

识别结果为 QR、一维条码或 Data Matrix 时,左侧可从 原图 切换到 自定义生成。如果原图已经解码,数据区会预填当前内容;用户可直接查看、修改并实时生成右侧结果。

  • QR:支持 0-7 共 8 种掩膜,并支持标准、微信、小红书、企业微信外观切换。
  • 一维条码:可选择 Code 128、Code 39、Code 93、EAN-13、EAN-8、UPC-A、UPC-E、ITF 和 Codabar。
  • Code 128:支持 A / B / C / Auto / Custom。Custom 数据必须以 \STARTA、\STARTB 或 \STARTC 开头,可使用 \FNC1-\FNC4、\CODEA-\CODEC、\SHIFT 及 ASCII 控制符;完整语法参考 docs/code 128种类.txt。
  • EAN/UPC:数据区只输入不含校验码的数据位,程序自动生成最后一位校验码;EAN-13 可切换是否显示右侧 > 标记。
  • Data Matrix:支持 传统自动 / 最短路径(Compact) / 强制 C40 三种文本生成策略,切换策略不会清空数据。输入限制为 ISO-8859-1,最长 1558 个字符。
  • 不支持的字符会在输入阶段过滤;生成失败时状态栏显示中文原因。

🛠️开发命令

cargo build
cargo run
cargo test
cargo fmt
cargo clippy --no-deps -- -D warnings

耗时较长的抖音码和 Data Matrix 拍照诊断测试默认标记为 ignored,具体命令和样本约定见 docs/IMPLEMENTATION_PLAN.md 的对应阶段及附录。

🕸️项目结构

src/
├── app.rs                  应用状态、后台处理、导入/导出流程
├── image_io.rs             剪贴板读图、文件打开、纹理转换
├── screen_capture.rs       Windows 框选截屏
├── detect/                 码类型识别和定位点检测
├── pipeline/               预处理、透视校正、网格推算
├── codec/                  QR/条码/Data Matrix/小程序码/抖音码采样与生成
├── vector/                 SVG 输出和差异预览
└── ui/                     egui 界面组件

更多实现细节见:

  • docs/ARCHITECTURE.md:架构、数据流、算法和技术决策。
  • docs/IMPLEMENTATION_PLAN.md:阶段任务、验收标准和路线图。

⚠️注意事项

  • 本项目当前仅面向 Windows。
  • 小程序码和抖音码协议未公开,工具只做几何采样还原,不做私有 payload 逆向。
  • Data Matrix 会优先解码重建并逐模块核对;只有所有重建候选均不匹配时才保留 ECC 200 网格采样结果。
  • SVG 用于印前生产前,请务必用差异高亮、扫码和人工叠图检查确认。
  • 软件开源免费,许可证见 LICENSE。

🌐社区

本开源项目已链接并认可 LINUX DO 社区。

💝捐赠支持

本项目完全免费开源,无广告无付费功能。如果觉得有用,给作者加个鸡腿🍗,支持持续开发。

捐赠方式

支付宝 / 微信二维码
支付宝 微信支付
支付宝 微信支付

About

No description, website, or topics provided.

Resources

Stars

55 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages