pub struct QrCode { /* private fields */ }
Expand description
The encoded QR code symbol.
Implementations§
Source§impl QrCode
impl QrCode
Sourcepub fn new<D: AsRef<[u8]>>(data: D) -> QrResult<Self>
pub fn new<D: AsRef<[u8]>>(data: D) -> QrResult<Self>
Constructs a new QR code which automatically encodes the given data.
This method uses the “medium” error correction level and automatically chooses the smallest QR code.
use qrcode::QrCode;
let code = QrCode::new(b"Some data").unwrap();
§Errors
Returns error if the QR code cannot be constructed, e.g. when the data is too long.
Sourcepub fn with_error_correction_level<D: AsRef<[u8]>>(
data: D,
ec_level: EcLevel,
) -> QrResult<Self>
pub fn with_error_correction_level<D: AsRef<[u8]>>( data: D, ec_level: EcLevel, ) -> QrResult<Self>
Constructs a new QR code which automatically encodes the given data at a specific error correction level.
This method automatically chooses the smallest QR code.
use qrcode::{QrCode, EcLevel};
let code = QrCode::with_error_correction_level(b"Some data", EcLevel::H).unwrap();
§Errors
Returns error if the QR code cannot be constructed, e.g. when the data is too long.
Sourcepub fn with_version<D: AsRef<[u8]>>(
data: D,
version: Version,
ec_level: EcLevel,
) -> QrResult<Self>
pub fn with_version<D: AsRef<[u8]>>( data: D, version: Version, ec_level: EcLevel, ) -> QrResult<Self>
Constructs a new QR code for the given version and error correction level.
use qrcode::{QrCode, Version, EcLevel};
let code = QrCode::with_version(b"Some data", Version::Normal(5), EcLevel::M).unwrap();
This method can also be used to generate Micro QR code.
use qrcode::{QrCode, Version, EcLevel};
let micro_code = QrCode::with_version(b"123", Version::Micro(1), EcLevel::L).unwrap();
§Errors
Returns error if the QR code cannot be constructed, e.g. when the data is too long, or when the version and error correction level are incompatible.
Sourcepub fn with_bits(bits: Bits, ec_level: EcLevel) -> QrResult<Self>
pub fn with_bits(bits: Bits, ec_level: EcLevel) -> QrResult<Self>
Constructs a new QR code with encoded bits.
Use this method only if there are very special need to manipulate the raw bits before encoding. Some examples are:
- Encode data using specific character set with ECI
- Use the FNC1 modes
- Avoid the optimal segmentation algorithm
See the Bits
structure for detail.
#![allow(unused_must_use)]
use qrcode::{QrCode, Version, EcLevel};
use qrcode::bits::Bits;
let mut bits = Bits::new(Version::Normal(1));
bits.push_eci_designator(9);
bits.push_byte_data(b"\xca\xfe\xe4\xe9\xea\xe1\xf2 QR");
bits.push_terminator(EcLevel::L);
let qrcode = QrCode::with_bits(bits, EcLevel::L);
§Errors
Returns error if the QR code cannot be constructed, e.g. when the bits are too long, or when the version and error correction level are incompatible.
Sourcepub fn error_correction_level(&self) -> EcLevel
pub fn error_correction_level(&self) -> EcLevel
Gets the error correction level of this QR code.
Sourcepub fn width(&self) -> usize
pub fn width(&self) -> usize
Gets the number of modules per side, i.e. the width of this QR code.
The width here does not contain the quiet zone paddings.
Sourcepub fn max_allowed_errors(&self) -> usize
pub fn max_allowed_errors(&self) -> usize
Gets the maximum number of allowed erratic modules can be introduced before the data becomes corrupted. Note that errors should not be introduced to functional modules.
Sourcepub fn is_functional(&self, x: usize, y: usize) -> bool
pub fn is_functional(&self, x: usize, y: usize) -> bool
Checks whether a module at coordinate (x, y) is a functional module or not.
Sourcepub fn to_debug_str(&self, on_char: char, off_char: char) -> String
pub fn to_debug_str(&self, on_char: char, off_char: char) -> String
Converts the QR code into a human-readable string. This is mainly for debugging only.
Sourcepub fn to_vec(&self) -> Vec<bool>
👎Deprecated since 0.4.0: use to_colors()
instead
pub fn to_vec(&self) -> Vec<bool>
to_colors()
insteadConverts the QR code to a vector of booleans. Each entry represents the color of the module, with “true” means dark and “false” means light.
Sourcepub fn into_vec(self) -> Vec<bool>
👎Deprecated since 0.4.0: use into_colors()
instead
pub fn into_vec(self) -> Vec<bool>
into_colors()
insteadConverts the QR code to a vector of booleans. Each entry represents the color of the module, with “true” means dark and “false” means light.
Sourcepub fn into_colors(self) -> Vec<Color>
pub fn into_colors(self) -> Vec<Color>
Converts the QR code to a vector of colors.
Sourcepub fn render<P: Pixel>(&self) -> Renderer<'_, P>
pub fn render<P: Pixel>(&self) -> Renderer<'_, P>
Renders the QR code into an image. The result is an image builder, which you may do some additional configuration before copying it into a concrete image.
§Examples
let image = QrCode::new(b"hello").unwrap()
.render()
.dark_color(Rgb([0, 0, 128]))
.light_color(Rgb([224, 224, 224])) // adjust colors
.quiet_zone(false) // disable quiet zone (white border)
.min_dimensions(300, 300) // sets minimum image size
.build();
Note: the image
crate itself also provides method to rotate the image,
or overlay a logo on top of the QR code.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for QrCode
impl RefUnwindSafe for QrCode
impl Send for QrCode
impl Sync for QrCode
impl Unpin for QrCode
impl UnwindSafe for QrCode
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more