feat: 彩色 QR 码 — 自定义前景色/背景色

- QrConfig 新增 fg_color/bg_color 字段(CSS 十六进制格式)
- QrCode 存储解析后的 [u8;3] RGB
- PNG 渲染 Luma→Rgba,支持 RGBA 颜色
- SVG 渲染使用 QrCode 颜色字段
- CLI 新增 --fg/--bg 参数
- 新增 parse_hex_color 支持 #RRGGBB 和 #RGB
- 新增 2 个颜色测试(74 tests total)
This commit is contained in:
2026-06-19 21:10:56 +08:00
parent 3d11ba2446
commit 23ccb37b52
6 changed files with 119 additions and 14 deletions
+10
View File
@@ -39,6 +39,14 @@ struct Args {
/// 反色(黑底白码)
#[arg(long)]
invert: bool,
/// 前景色 "#RRGGBB" [default: "#000000"]
#[arg(long)]
fg: Option<String>,
/// 背景色 "#RRGGBB" [default: "#FFFFFF"]
#[arg(long)]
bg: Option<String>,
}
fn main() -> anyhow::Result<()> {
@@ -80,6 +88,8 @@ fn do_encode(content: &str, args: &Args) -> anyhow::Result<()> {
level,
version,
margin: args.margin,
fg_color: args.fg.clone(),
bg_color: args.bg.clone(),
};
let qr = QrCode::encode(content, config).map_err(|e| anyhow::anyhow!("编码失败: {}", e))?;