https://github.com/marhkb/zbars
High-level rust bindings to the zbar library
https://github.com/marhkb/zbars
barcode-reader barcode-scanner rust rust-bindings zbar
Last synced: 10 months ago
JSON representation
High-level rust bindings to the zbar library
- Host: GitHub
- URL: https://github.com/marhkb/zbars
- Owner: marhkb
- License: lgpl-2.1
- Created: 2018-05-05T17:31:04.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2022-01-27T21:02:00.000Z (about 4 years ago)
- Last Synced: 2025-04-30T15:48:43.281Z (10 months ago)
- Topics: barcode-reader, barcode-scanner, rust, rust-bindings, zbar
- Language: Rust
- Homepage:
- Size: 205 KB
- Stars: 3
- Watchers: 4
- Forks: 4
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# zbars
##### Renamed from zbar-rs
[![crates.io version][1]][2] [![build status][3]][4]
[![downloads][5]][6] [![docs.rs docs][7]][8]
# High-level rust bindings to the zbar library
Just started implementing a high-level rust binding to zbar barcode scanner library.
Some things already work, but there is still a lot to do. So don't expect this to work without flaws.
And expect things to break!
# Building and Running
You need `zbar native library` in order to build `zbars`.
## Linux
On Linux you can simply install zbar development package. The build script uses
`pkg-config` to probe for zbar native library.
### Ubuntu:
# apt install libzbar-dev
### Arch Linux
# pacman -S zbar
Feature `zbar_fork_if_available` is enabled by default and builds the crate against
zbar `0.2` which is a more recent fork (https://github.com/procxx/zbar) if found by `pkg-config`.
Nothing special to consider when running your binary on Linux.
## Windows
Building on Windows is a little bit uncomfortable. I only tested it on x64 with MSVC toolchain.
At first you must download this [ZBar Visual Studio project](https://github.com/dani4/ZBarWin64).
You can either build the project or just use the prebuilt binaries in the project's `lib` directory.
Then set the following environment variables to be able to build:
ZBAR_LIB_DIR="build output directory or directory where prebuilds are stored"
ZBAR_INCLUDE_DIR="directory where zbar.h is stored (usually named include)"
In order to run you also need to compile [libiconv](https://www.gnu.org/software/libiconv/) or download `libiconv.dll` from somewhere else.
Both `libzbar64-0.dll` from lib directory and `libiconv.dll` have to be copied to the directory where
your binary is.
# Usage
Scan an image for QR codes:
```
extern crate zbars;
use zbars::prelude::*;
pub fn main() {
let image = ZBarImage::from_path("test/qr_hello-world.png")
.expect("unable to create image");
let scanner = ZBarImageScanner::builder()
.with_config(ZBarSymbolType::ZBAR_QRCODE, ZBarConfig::ZBAR_CFG_ENABLE, 1)
.build()
.unwrap();
let symbol_set = scanner.scan_image(&image)
.expect("error on scanning image");
symbol_set.iter()
.for_each(|symbol| {
println!("symbol decoded: {}", symbol.data());
symbol.polygon().iter()
.enumerate()
.for_each(|(i, point)| {
println!("{}. point: {:?}", i, point);
})
});
}
```
[1]: https://img.shields.io/crates/v/zbars.svg?style=flat-square
[2]: https://crates.io/crates/zbars
[3]: https://img.shields.io/travis/marhkb/zbars.svg?style=flat-square
[4]: https://travis-ci.org/marhkb/zbars
[5]: https://img.shields.io/crates/d/zbars.svg?style=flat-square
[6]: https://crates.io/crates/zbars
[7]: https://docs.rs/zbars/badge.svg
[8]: https://docs.rs/crate/zbars