Rust二维码生成与终端显示库qr2term的使用,快速在终端生成和展示QR码
Rust二维码生成与终端显示库qr2term的使用,快速在终端生成和展示QR码
qr2term是一个极其简单的QR码渲染库,它将文本作为QR码打印到终端,除此之外没有其他功能。
基础示例代码
fn main() {
// 打印简单的URL二维码
qr2term::print_qr("https://rust-lang.org/");
}
完整使用示例
1. 添加依赖
首先在Cargo.toml中添加依赖:
[dependencies]
qr2term = "0.3.3"
2. 基础使用
fn main() {
// 打印URL二维码
qr2term::print_qr("https://rust-lang.org/");
// 打印文本二维码
qr2term::print_qr("Hello, Rust!");
}
3. 从标准输入读取内容生成二维码
use std::io::{self, Read};
fn main() {
// 从标准输入读取内容
let mut input = String::new();
io::stdin().read_to_string(&mut input).expect("读取输入失败");
// 生成二维码
qr2term::print_qr(&input);
}
4. WiFi凭证二维码生成
fn main() {
let ssid = "MyWiFiNetwork";
let password = "securepassword123";
// 格式化WiFi配置字符串
let wifi_config = format!("WIFI:T:WPA;S:{};P:{};;", ssid, password);
// 生成WiFi二维码
qr2term::print_qr(&wifi_config);
}
命令行使用
从命令行生成二维码:
# 从标准输入生成二维码
$ echo HelloWorld | cargo run --example example-read
# 生成WiFi二维码
$ echo HelloWorld | cargo run --example example-wifi
许可证
该项目使用MPL 2.0许可证。
1 回复
Rust二维码生成与终端显示库qr2term使用指南
qr2term
是一个简单易用的Rust库,可以在终端中生成和显示QR码。它非常适合需要在命令行界面中快速展示二维码的场景。
安装方法
在Cargo.toml中添加依赖:
[dependencies]
qr2term = "0.3"
基本使用方法
1. 最简单的使用方式
use qr2term::print_qr;
fn main() {
print_qr("https://www.rust-lang.org").unwrap();
}
这将在终端输出一个包含Rust官网URL的QR码。
2. 自定义二维码
use qr2term::{print_qr_with_border, qr_to_string};
fn main() {
// 打印带边框的QR码
print_qr_with_border("Hello, Rust!", 2).unwrap();
// 获取QR码字符串以便进一步处理
let qr_string = qr_to_string("Custom QR content").unwrap();
println!("{}", qr_string);
}
3. 高级选项
use qr2term::{print_qr_with_options, QrOptions};
fn main() {
let options = QrOptions {
quiet_zone: 1, // 边框宽度
module_width: 2, // 每个模块的宽度(字符数)
module_height: 1, // 每个模块的高度(行数)
colors: Some(("\x1b[44m \x1b[0m", "\x1b[47m \x1b[0m")), // 自定义颜色
};
print_qr_with_options("Advanced QR code", &options).unwrap();
}
完整示例代码
use qr2term::{print_qr, print_qr_with_border, qr_to_string, print_qr_with_options, QrOptions};
fn main() {
// 示例1: 最简单的QR码生成
println!("=== 基本QR码 ===");
print_qr("https://www.rust-lang.org").unwrap();
// 示例2: 带边框的QR码
println!("\n=== 带边框的QR码 ===");
print_qr_with_border("Rust QR Code Example", 2).unwrap();
// 示例3: 获取QR码字符串
println!("\n=== QR码字符串 ===");
let qr_str = qr_to_string("Scan me!").unwrap();
println!("{}", qr_str);
// 示例4: 自定义QR码选项
println!("\n=== 自定义QR码 ===");
let custom_options = QrOptions {
quiet_zone: 2, // 更大的边框
module_width: 3, // 更宽的模块
module_height: 2, // 更高的模块
colors: Some(("\x1b[41m \x1b[0m", "\x1b[47m \x1b[0m")), // 红底白字
};
print_qr_with_options("Customized QR Code", &custom_options).unwrap();
}
示例输出
运行上述完整示例后,终端会显示类似下面的QR码:
████████████████████████████
████ ▄▄▄▄▄ █▀▄▄▀█ ▄▄▄▄▄ ████
████ █ █ █ ██ █ █ █ ████
████ █▄▄▄█ █▄▄▄▄█ █▄▄▄█ ████
████▄▄▄▄▄▄▄█ ▀▄▀ ▄▄▄▄▄▄▄████
████ ▄▀▀▄ ▄▀ ▀▀▀ █▀ ▀ ▀ ████
████▄▄▄▀▄▄▀▄▀ ▀ ▀▄█ ▄▄▀▄████
████▄▄▄▄▄▄▄▄▀ ▀▄▀▄▀▄▀▄▀▄████
████ ▄▄▄▄▄ █▄▀ █ █▄█ █▄████
████ █ █ █▀▄▀▄▄▄▀▀▀ ▀▀████
████ █▄▄▄█ █▄█▀▀ ▄▀▄▀ ▀ ████
████▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄████
████████████████████████████
注意事项
- 某些终端可能不支持彩色QR码显示,此时会回退到黑白显示
- 二维码内容长度有限制,过长的内容可能无法正确编码
- 对于复杂终端环境,建议先测试显示效果
这个库非常适合需要快速在终端展示QR码的Rust应用程序,比如:
- 分享终端中的URL
- 显示认证令牌
- 分享WiFi连接信息
- 任何需要在命令行界面传递到移动设备的信息