Rust 二维码生成器:qr_code 库
二维码已成为现代网络和移动应用程序不可或缺的一部分。它们用于快速分享链接、联系人、支付数据和其他信息。如果您使用 Rust 开发并希望为项目添加二维码生成功能,qr_code 库是最佳解决方案之一。在本文中,我们将详细介绍如何在 Rust 代码中安装、配置和使用该库来创建二维码。
什么是 qr_code 库?
qr_code 是一个纯 Rust 编写的二维码生成库(版本 2),无外部依赖。它允许从字符串数据创建二维码,配置纠错级别、模块大小和颜色。该库支持输出为 SVG、PNG(通过 image 库)以及用于终端的 ASCII 图形。主要优势:
- 高性能(Rust 无垃圾回收)。
- 内存占用极低。
- 支持全部四种纠错级别(L、M、Q、H)。
- 灵活配置二维码外观。
安装
在您的 Cargo.toml 中添加依赖:
[dependencies]qr_code = "0.2.0"如果您需要输出为 PNG,请额外安装 image crate:
image = "0.24"之后执行 cargo build 以下载并编译该库。
基本示例:生成 SVG 格式的二维码
获取二维码最简单的方法是将其保存为矢量 SVG 格式。以下是一个最小工作示例:
use qr_code::QrCode;
fn main() { // 从字符串创建二维码 let code = QrCode::new("https://pythonlib.ru").unwrap(); // 生成模块大小为 8 像素的 SVG 字符串 let svg = code.to_svg().with_width(8).to_string(); // 保存到文件 std::fs::write("qrcode.svg", svg).unwrap(); println!("二维码已保存到 qrcode.svg");}运行后,您将获得 qrcode.svg 文件,可在浏览器中打开或嵌入到 HTML 页面中。
配置纠错级别
纠错级别决定了二维码在受损后仍可被读取的程度。该库支持四个级别:
ErrorCorrection::Low— 可恢复 7% 的数据。ErrorCorrection::Medium— 可恢复 15%。ErrorCorrection::Quartile— 可恢复 25%。ErrorCorrection::High— 可恢复 30%。
使用示例:
use qr_code::{QrCode, ErrorCorrection};
let code = QrCode::with_error_correction( "秘密代码", ErrorCorrection::High).unwrap();
let svg = code.to_svg().with_width(10).to_string();std::fs::write("secret_qr.svg", svg).unwrap();生成 PNG 格式的二维码(位图图像)
要输出为 PNG,需要 image crate。首先将其添加到 Cargo.toml,然后使用以下代码:
use qr_code::QrCode;use image::{Luma, ImageBuffer};
fn main() { let code = QrCode::new("Rust is awesome!").unwrap(); // 创建图像:每个模块 = 10 像素 let size = code.width() * 10; let mut img = ImageBuffer::new(size as u32, size as u32); // 填充白色背景 for pixel in img.pixels_mut() { *pixel = Luma([255u8]); } // 绘制黑色模块 for y in 0..code.width() { for x in 0..code.width() { if code[(x, y)] { let px = x as u32 * 10; let py = y as u32 * 10; for dy in 0..10 { for dx in 0..10 { img.