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码:

████████████████████████████
████ ▄▄▄▄▄ █▀▄▄▀█ ▄▄▄▄▄ ████
████ █   █ █ ██ █ █   █ ████
████ █▄▄▄█ █▄▄▄▄█ █▄▄▄█ ████
████▄▄▄▄▄▄▄█ ▀▄▀ ▄▄▄▄▄▄▄████
████ ▄▀▀▄ ▄▀ ▀▀▀ █▀ ▀ ▀ ████
████▄▄▄▀▄▄▀▄▀ ▀ ▀▄█ ▄▄▀▄████
████▄▄▄▄▄▄▄▄▀ ▀▄▀▄▀▄▀▄▀▄████
████ ▄▄▄▄▄ █▄▀ █ █▄█ █▄████
████ █   █ █▀▄▀▄▄▄▀▀▀ ▀▀████
████ █▄▄▄█ █▄█▀▀ ▄▀▄▀ ▀ ████
████▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄████
████████████████████████████

注意事项

  1. 某些终端可能不支持彩色QR码显示,此时会回退到黑白显示
  2. 二维码内容长度有限制,过长的内容可能无法正确编码
  3. 对于复杂终端环境,建议先测试显示效果

这个库非常适合需要快速在终端展示QR码的Rust应用程序,比如:

  • 分享终端中的URL
  • 显示认证令牌
  • 分享WiFi连接信息
  • 任何需要在命令行界面传递到移动设备的信息
回到顶部