qr_code ======= [![crates.io](https://img.shields.io/crates/v/qr_code.svg)](https://crates.io/crates/qr_code) [![MIT OR Apache 2.0](https://img.shields.io/badge/license-MIT%20%2f%20Apache%202.0-blue.svg)](./LICENSE-APACHE.txt) QR code encoder and decoder [*] in Rust. [Documentation](https://docs.rs/qr_code). ### Encoder This lib forked https://docs.rs/qrcode mainly because of lack of support to structured QR code (multiple QR codes) even if the minimal change required has been pushed https://github.com/kennytm/qrcode-rust/pull/44 Moreover dependencies `image`, `checked_int_cast` and module `render` has been removed with a view to simplicity. ### Decoder [*] Decoder part is based on https://docs.rs/rqrr/0.3.0/rqrr/ without the image detection part and is not intended for scanning QR codes from camera. **Decoder is included only for testing purpose**, so that depending libraries could run round trip during tests. Example ------- ## Bmp image generation requires `bmp` feature ```rust let qr_code = qr_code::QrCode::new(b"Hello").unwrap(); let bmp = qr_code.to_bmp(); bmp.write(std::fs::File::create("test.bmp").unwrap()).unwrap(); ``` Generate this image: ![test](https://raw.githubusercontent.com/RCasatta/qr_code/master/test_data/test.bmp) Looks small? Many context supports rescaling mode specific for pixelated images, for example in html `image-rendering: pixelated;` As an alternative see method `Bmp::mul` and `Bmp::add_whitespace` ## Unicode string generation ```rust let qr_code = qr_code::QrCode::new(b"Hello").unwrap(); println!("{}", qr_code.to_string(false, 3)); ``` Generates this output (looks better in terminal): ```text █▀▀▀▀▀█ ▀▀▀█ █▀▀▀▀▀█ █ ███ █ █ █ ▀ █ ███ █ █ ▀▀▀ █ ██ ▄▀ █ ▀▀▀ █ ▀▀▀▀▀▀▀ █ █ ▀ ▀▀▀▀▀▀▀ ▀ ▀█▀▀▀ ▄▀ █▄▄█▀▀██ ▄ █▀▀█▀▄▄▀█▄█▄█▀ ██▀ ▀▀▀ ▀▀█▀▀ █ █ ▄ ▀ █▀▀▀▀▀█ ▄▀▄▀ ▀ ▄█▄██ █ ███ █ █▄ █▄█▄▄▀▄ ▀ █ ▀▀▀ █ ▀█ ▄█▄█▀▄▄█ ▀▀▀▀▀▀▀ ▀▀ ▀ ▀ ▀ ``` ## Minimum Supported Rust Version (MSRV) Current MSRV is 1.48.0