docs: README 修复数字 + mermaid 图完整 + 解码示例
- 测试数 58→72,Tauri commands 5→6 - mermaid 架构图新增 Decoder 层 + Web decode 端点 - mermaid 数据流水线新增解码逆向流程 - 库调用示例新增 decode_image 用法
This commit is contained in:
@@ -44,23 +44,25 @@ graph TB
|
||||
|
||||
subgraph Web["Web 服务 (axum)"]
|
||||
HTML[内嵌 HTML 页面]
|
||||
API[GET /api/qr]
|
||||
API[GET /api/qr + POST /api/decode]
|
||||
end
|
||||
|
||||
subgraph CLI["CLI 命令行"]
|
||||
Clap[clap 参数解析]
|
||||
Clap[clap 编码 + --decode 解码]
|
||||
end
|
||||
|
||||
subgraph IPC["Tauri IPC 桥接"]
|
||||
Commands[5 个 Tauri commands]
|
||||
Commands[6 个 Tauri commands]
|
||||
end
|
||||
|
||||
subgraph Core["Rust core 库 (qr-core)"]
|
||||
Encoder[编码层]
|
||||
Decoder[解码层]
|
||||
ECC[纠错层]
|
||||
Matrix[矩阵层]
|
||||
Render[渲染层]
|
||||
Encoder --> ECC
|
||||
Decoder --> ECC
|
||||
ECC --> Matrix
|
||||
Matrix --> Render
|
||||
end
|
||||
@@ -94,6 +96,19 @@ sequenceDiagram
|
||||
M->>M: 功能图案 + 蛇形排列 + 掩码
|
||||
M->>R: QR 矩阵
|
||||
R->>UI: PNG / SVG / ASCII
|
||||
|
||||
Note over U,R: --- 解码流水线 (逆向) ---
|
||||
|
||||
U->>UI: 上传图片
|
||||
UI->>Q: decode_image(bytes)
|
||||
Q->>R: 图像二值化 + 定位图案检测
|
||||
R->>M: 布尔矩阵
|
||||
M->>M: 读取格式/版本信息 + 解掩码 + 蛇形提取
|
||||
M->>RS: 数据码字 + 纠错码字
|
||||
RS->>RS: 去交错 + 伴随式 + Berlekamp-Massey + Chien + Forney
|
||||
RS->>E: 纠错后数据码字
|
||||
E->>E: 模式解码(数字/字母/字节/汉字)
|
||||
E->>UI: 解码文本
|
||||
```
|
||||
|
||||
## 功能
|
||||
@@ -192,7 +207,7 @@ cargo run -p qrgen -- "Hello World"
|
||||
cargo run -p qrgen-web # → http://localhost:3000
|
||||
|
||||
# Rust 测试
|
||||
cargo test # 58 unit
|
||||
cargo test --lib # 72 unit
|
||||
|
||||
# 前端测试
|
||||
cd gui/src-frontend && pnpm test # vitest
|
||||
@@ -267,7 +282,7 @@ QRGen/
|
||||
│ ├── capabilities/default.json # ACL 权限
|
||||
│ ├── src/
|
||||
│ │ ├── main.rs # Windows 子系统入口
|
||||
│ │ └── lib.rs # 5 个 Tauri commands
|
||||
│ │ └── lib.rs # 6 个 Tauri commands
|
||||
│ ├── src-frontend/ # React 前端
|
||||
│ │ └── src/
|
||||
│ │ ├── App.tsx # 主布局(三栏+底部输入)
|
||||
@@ -316,15 +331,21 @@ cargo run --example high_ecc
|
||||
cargo run --example custom_config
|
||||
```
|
||||
|
||||
作为程序库使用:
|
||||
作为程序库使用(编码 + 解码):
|
||||
|
||||
```rust
|
||||
use qr_core::qr::{QrCode, QrConfig};
|
||||
use qr_core::decoder;
|
||||
|
||||
// 编码:文本 → QR
|
||||
let qr = QrCode::encode("Hello QR!", QrConfig::default())?;
|
||||
println!("{}", qr.to_ascii(false)); // 终端预览
|
||||
qr.to_png_bytes(8)?; // PNG 字节
|
||||
let svg = qr.to_svg(); // SVG 字符串
|
||||
|
||||
// 解码:QR 图片 → 文本
|
||||
let bytes = std::fs::read("qr.png")?;
|
||||
let result = decoder::decode_image(&bytes)?;
|
||||
println!("解码结果: {}", result.text);
|
||||
```
|
||||
|
||||
## 发布到 crates.io
|
||||
|
||||
Reference in New Issue
Block a user