feat: Logo 嵌入 — QR 码中央叠加自定义图片

- PNG 渲染:RgbaImage 上使用 imageops::overlay 叠加 logo
- SVG 渲染:base64 编码 logo 嵌入 <image> 标签
- QrCode::to_png_bytes / to_svg 新增 Option<logo_bytes> 参数
- Logo 默认占 QR 区域 25%,建议配合 H 级纠错使用
This commit is contained in:
2026-06-19 21:12:44 +08:00
parent 23ccb37b52
commit 38be82973e
10 changed files with 112 additions and 40 deletions
+2 -2
View File
@@ -112,7 +112,7 @@ fn do_encode(content: &str, args: &Args) -> anyhow::Result<()> {
match ext.as_str() {
"png" => {
let bytes = qr.to_png_bytes(args.size)?;
let bytes = qr.to_png_bytes(args.size, None)?;
std::fs::write(path, bytes)?;
println!(
"已生成: {} (版本 {}, {}×{} 模块, {:?} 级纠错)",
@@ -124,7 +124,7 @@ fn do_encode(content: &str, args: &Args) -> anyhow::Result<()> {
);
}
"svg" => {
let svg = qr.to_svg();
let svg = qr.to_svg(None);
std::fs::write(path, svg)?;
println!("已生成: {} (版本 {}, SVG 格式)", path, qr.version.0);
}