rxing - cRustacean Crossing

This is a port of the ZXing (https://github.com/zxing/zxing) java barcode library to pure rust. Conversion was done by hand. Original license resides with the authors of zxing.

Porting of the testing library is incomplete. Currently all positive tests are implemented. Negative verfication tests are not implemented.

Porting was done with the rust language in mind, though some parts may resemble java more directly than a proper clean-sheet rust implementation. The process of "rustifying" the code is ongoing.

CLI

If you're looking for a CLI interface into the library, please see rxing-cli.

WASM

If you're looking for a WASM version of this library, check out rxing-wasm, or on NPM.

Status

All barcode formats are tested and functioning in their current state against current tests.

| Symbology | Status | | --- | --- | | aztec | complete | | datamatrix | complete | | maxicode | complete | | pdf417 | complete | | qrcode | complete | | coda | complete | | code 39 | complete | | code 93 | complete | | code 128 | complete | | itf | complete | | ean 8 | complete | | ean 13 | complete | | upc a | complete | | upc e | complete |

Feature Flags

The following feature flags are available: * image: Enable features required for image manipulation and reading. * allow_forced_iso_ied_18004_compliance: Allows the ability to force ISO/IED 18004 compliance. Leave disabled unless specificially needed. * svg_write: Enable support for writing SVG files * svg_read: Enable support for reading SVG files * wasm_support: Make certain changes to support building this module in WASM * experimental_features: Enable experimental features, risky. * serde: Adds support for serde Serialize and Deserialize for outward facing structs * otsu_level: Adds the otsu level binarizer.

This is not used by any of the helper functions, you must specifically use it while setting up a new decoder. The `OtsuLevelBinarizer` is not well tested and it does *not* pass the current test suite. Consider this only if you know why you would want to use it. In many cases, the standard binarizer is likely better. If you have a very specific use case, and you know what your incoming data will resemble, you should consider implementing your own `Binarizer` and using that instead.

The default feature set includes only the image feature mentioned above.

Incomplete

The library has only been thurougly tested with the BufferedImageLuminanceSource source format. Using any other source is currently experimental and may result in unexpected or undefined outputs. This means that the feature flag used to enable the use of the image crate is currently on by default. Turning it off may result in unexpected results.

Example with helpers

```rust use rxing;

fn main() { let filename = "testimage.jpg";

let results = rxing::helpers::detect_multiple_in_file(file_name).expect("decodes");

for result in results {
    println!("{} -> {}", result.getBarcodeFormat(), result.getText())
}

} ```

Latest Release Notes

Known Issues

ZXing Track

Currently tracking zxing 3.5.1

Copyright notes

The original license remains with the zxing developers. The license for the ported components of the c++ port remain with the developers of that port, where applicable.