#qrcode #image-encoding #barcode #encoder #image #generate

bin+lib qrcode-rs

Rust 中的 QR 码编码器,生成 RAW、PNG 和 SVG 格式的 QR 码矩阵和图像

6 个版本

0.1.5 2024 年 5 月 20 日
0.1.4 2024 年 5 月 20 日
0.1.3 2024 年 3 月 3 日
0.1.2 2023 年 5 月 23 日
0.1.0 2022 年 12 月 11 日

#291 in 图像

Download history 102/week @ 2024-04-29 15/week @ 2024-05-06 21/week @ 2024-05-13 363/week @ 2024-05-20 27/week @ 2024-05-27 80/week @ 2024-06-03 59/week @ 2024-06-10 47/week @ 2024-06-17 14/week @ 2024-06-24 23/week @ 2024-07-01 1/week @ 2024-07-08 8/week @ 2024-07-15 10/week @ 2024-07-22 37/week @ 2024-07-29 16/week @ 2024-08-05 55/week @ 2024-08-12

每月下载量 122 次

MIT/Apache

215KB
4K SLoC

Qrcode-rs

Build crates.io docs.rs License Crates.io

Rust 中 QR 码和 Micro QR 码编码器。 文档

Cargo.toml

[dependencies]
qrcode-rs = "0.1"

默认设置将取决于 image crate。如果您不需要图像生成功能,请禁用 default-features

[dependencies]
qrcode-rs = { version = "0.1", default-features = false }

示例

图像生成

use qrcode_rs::QrCode;
use image::Luma;

fn main() {
    // Encode some data into bits.
    let code = QrCode::new(b"01234567").unwrap();

    // Render the bits into an image.
    let image = code.render::<Luma<u8>>().build();

    // Save the image.
    image.save("/tmp/qrcode.png").unwrap();
}

生成此图像

Output

字符串生成

use qrcode_rs::QrCode;

fn main() {
    let code = QrCode::new(b"Hello").unwrap();
    let string = code.render::<char>()
        .quiet_zone(false)
        .module_dimensions(2, 1)
        .build();
    println!("{}", string);
}

生成此输出

##############    ########  ##############
##          ##          ##  ##          ##
##  ######  ##  ##  ##  ##  ##  ######  ##
##  ######  ##  ##  ##      ##  ######  ##
##  ######  ##  ####    ##  ##  ######  ##
##          ##  ####  ##    ##          ##
##############  ##  ##  ##  ##############
                ##  ##
##  ##########    ##  ##    ##########
      ##        ##    ########    ####  ##
    ##########    ####  ##  ####  ######
    ##    ##  ####  ##########    ####
  ######    ##########  ##    ##        ##
                ##      ##    ##  ##
##############    ##  ##  ##    ##  ####
##          ##  ##  ##        ##########
##  ######  ##  ##    ##  ##    ##    ##
##  ######  ##  ####  ##########  ##
##  ######  ##  ####    ##  ####    ##
##          ##    ##  ########  ######
##############  ####    ##      ##    ##

SVG 生成

use qrcode_rs::{QrCode, Version, EcLevel};
use qrcode_rs::render::svg;

fn main() {
    let code = QrCode::with_version(b"01234567", Version::Micro(2), EcLevel::L).unwrap();
    let image = code.render()
        .min_dimensions(200, 200)
        .dark_color(svg::Color("#800000"))
        .light_color(svg::Color("#ffff80"))
        .build();
    println!("{}", image);
}

生成此 SVG

Output

Unicode 字符串生成

use qrcode_rs::QrCode;
use qrcode_rs::render::unicode;

fn main() {
    let code = QrCode::new("mow mow").unwrap();
    let image = code.render::<unicode::Dense1x2>()
        .dark_color(unicode::Dense1x2::Light)
        .light_color(unicode::Dense1x2::Dark)
        .build();
    println!("{}", image);
}

生成此输出

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

许可证

许可协议为以下之一

由您选择。

贡献

除非您明确说明,否则任何有意提交以包含在您的工作中的贡献,根据 Apache-2.0 许可证定义,将如上双许可,不附加任何其他条款或条件。

感谢 Kennytm,此包基于 qrcode-rust

依赖关系

~1.5MB
~26K SLoC