Mercurial > hgrepos > Python2 > PyMuPDF
diff mupdf-source/thirdparty/zxing-cpp/wrappers/rust/README.md @ 2:b50eed0cc0ef upstream
ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
The directory name has changed: no version number in the expanded directory now.
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Mon, 15 Sep 2025 11:43:07 +0200 |
| parents | |
| children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mupdf-source/thirdparty/zxing-cpp/wrappers/rust/README.md Mon Sep 15 11:43:07 2025 +0200 @@ -0,0 +1,70 @@ +# zxing-cpp + +zxing-cpp is a Rust wrapper for the C++ library [zxing-cpp](https://github.com/zxing-cpp/zxing-cpp). + +It is an open-source, multi-format linear/matrix barcode image processing library implemented in C++. +It was originally ported from the Java ZXing Library but has been developed further and now includes +many improvements in terms of runtime and detection performance. + +## Usage + +In your Cargo.toml: + +```toml +[dependencies] +# `bundled` causes cargo to compile and statically link an up to +# date version of the c++ core library. This is the most convenient +# and safe way to build the library. +zxing-cpp = { version = "0.4.1", features = ["bundled", "image"] } +``` + +Simple example reading some barcodes from a jpg file: + +```rust +use zxingcpp::BarcodeFormat; + +fn main() -> anyhow::Result<()> { + let image = image::open("some-image-file.jpg")?; + + let read_barcodes = zxingcpp::read() + .formats(BarcodeFormat::QRCode | BarcodeFormat::LinearCodes) + .try_invert(false); + + let barcodes = read_barcodes.from(&image)?; + + for barcode in barcodes { + println!("{}: {}", barcode.format(), barcode.text()); + } + + Ok(()) +} +``` + +Simple example creating a barcode and writing it to a svg file: + +```rust +fn main() -> anyhow::Result<()> { + let svg = zxingcpp::create(zxingcpp::BarcodeFormat::QRCode) + .from_str("https://github.com/zxing-cpp/zxing-cpp")? + .to_svg_with(&zxingcpp::write().scale(5))?; + std::fs::write("zxingcpp.svg", svg)?; + Ok(()) +} +``` + +Note: This should currently be considered a pre-release. The API may change slightly to be even more +idiomatic rust depending on community feedback. + +## Optional Features + +zxing-cpp provides features that are behind [Cargo features](https://doc.rust-lang.org/cargo/reference/manifest.html#the-features-section). +They are: + +* `bundled` uses a bundled version of the [zxing-cpp](https://github.com/zxing-cpp/zxing-cpp) c++ library. +* [`image`](https://crates.io/crates/image) allows convenient/implicit conversion between `ImageView`/`Image` and`GreyImage`/`DynamicImage`. + +## Benchmarking + +To compare the performance of this Rust wrapper project with other available barcode scanner Rust libraries, +I started the project [zxing-bench](https://github.com/axxel/zxing-bench). The README contains a few +results to get an idea.
