Skip to main content

Crate roka_qr

Crate roka_qr 

Source
Expand description

Zero-dependency QR code encoder + decoder with built-in PNG/PBM image I/O.

roka-qr covers ISO/IEC 18004 from end to end: byte / alphanumeric / numeric mode encoding, all four error-correction levels (L/M/Q/H), all 40 versions, and decoding back from a PNG or PBM image without ever pulling in an external crate.

§Quick start

Encode a string into a QR code and write it as PNG:

use roka_qr::{Encoder, EcLevel};

let code = Encoder::new(b"https://example.com").ec_level(EcLevel::M).build()?;
let bitmap = code.render().scale(8).quiet_zone(4).build();
let png_bytes = bitmap.to_png();

Decode a QR code from PNG bytes:

use roka_qr::Reader;

let png_bytes: Vec<u8> = std::fs::read("qr.png").unwrap();
let code = Reader::from_png(&png_bytes)?;
let payload: &[u8] = code.payload();

§Highlights

  • Zero external crate dependenciesstd only.
  • Encode and decode in one crate — fills a gap on crates.io.
  • Self-contained image I/O — PNG (encode + decode via built-in DEFLATE inflate) and PBM P1/P4.
  • Round-trip tested against qrencode and zbarimg.
  • No unsafe.

Structs§

Bitmap
A binary bitmap — true = dark pixel.
Code
An encoded or decoded QR code.
Encoder
Builder for QR code generation.
Reader
Decode a QR code from various input formats.
RenderBuilder
Builder returned by Code::render.
Version
QR version number, in the range 1..=40.

Enums§

EcLevel
Error-correction level for a QR code.
Error
Errors produced by roka-qr.