feat: CLI 编码模式 + 批量生成 + text_builder
- 新增 core/src/text_builder.rs — Rust 版文本构造(WiFi/vCard/Email/Phone/SMS) - CLI 新增 --mode 模式参数(wifi/vcard/email/phone/sms/url/batch) - CLI 新增 --ssid/--password/--name/--phone/--to 等模式专属参数 - CLI 新增 --batch <file> 批量生成(JSON 数组 / CSV) - 批量支持自动检测 JSON/CSV 格式并自动编号输出 - 新增 6 个 text_builder 单元测试(80 tests total)
This commit is contained in:
+11
-9
@@ -26,8 +26,7 @@ fn fill_module(
|
||||
|
||||
/// 在 QR 码 PNG 缓冲区中央叠加 logo
|
||||
fn overlay_logo(img: &mut RgbaImage, logo_bytes: &[u8], logo_size_pct: f32) -> Result<(), String> {
|
||||
let logo =
|
||||
image::load_from_memory(logo_bytes).map_err(|e| format!("Logo 加载失败: {e}"))?;
|
||||
let logo = image::load_from_memory(logo_bytes).map_err(|e| format!("Logo 加载失败: {e}"))?;
|
||||
let logo = logo.to_rgba8();
|
||||
|
||||
let img_w = img.width();
|
||||
@@ -39,12 +38,7 @@ fn overlay_logo(img: &mut RgbaImage, logo_bytes: &[u8], logo_size_pct: f32) -> R
|
||||
return Ok(()); // 太小,跳过
|
||||
}
|
||||
|
||||
let resized = imageops::resize(
|
||||
&logo,
|
||||
logo_size,
|
||||
logo_size,
|
||||
imageops::FilterType::Lanczos3,
|
||||
);
|
||||
let resized = imageops::resize(&logo, logo_size, logo_size, imageops::FilterType::Lanczos3);
|
||||
|
||||
let x = (img_w - logo_size) / 2;
|
||||
let y = (img_h - logo_size) / 2;
|
||||
@@ -79,7 +73,15 @@ pub fn render_png(
|
||||
false
|
||||
};
|
||||
|
||||
fill_module(&mut img, x, y, module_size as u32, is_dark, &qr.fg_color, &qr.bg_color);
|
||||
fill_module(
|
||||
&mut img,
|
||||
x,
|
||||
y,
|
||||
module_size as u32,
|
||||
is_dark,
|
||||
&qr.fg_color,
|
||||
&qr.bg_color,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user