#bindings #image #ffi #library #multimedia #qrcode

sys zbars

为zbar库提供高级Rust绑定

3个不稳定版本

使用旧的Rust 2015

0.2.0 2018年5月8日
0.1.1 2018年5月7日
0.1.0 2018年5月7日

#873 in 图像

LGPL-2.1

44KB
929

zbars

从zbar-rs重命名

crates.io version build status downloads docs.rs docs

为zbar库提供高级Rust绑定

刚刚开始实现zbar条码扫描库的高级Rust绑定。
有些功能已经实现,但仍有很多工作要做。所以不要期望它完美无缺。并且预期会有问题出现!

构建和运行

为了构建zbars,您需要zbar原生库

Linux

在Linux上,您可以简单地安装zbar开发包。构建脚本使用pkg-config来探测zbar原生库。

Ubuntu

# apt install libzbar-dev

Arch Linux

# pacman -S zbar

默认启用功能zbar_fork_if_available,并针对zbar 0.2构建crate,这是一个较新的分支(如果pkg-config找到的话)。

在Linux上运行二进制文件时无需考虑特殊事项。

Windows

在Windows上构建有点不舒服。我只在x64和MSVC工具链上进行了测试。
首先,您必须下载此ZBar Visual Studio项目
您可以选择构建项目或直接使用项目lib目录中的预构建二进制文件。然后设置以下环境变量以进行构建

ZBAR_LIB_DIR="build output directory or directory where prebuilds are stored"
ZBAR_INCLUDE_DIR="directory where zbar.h is stored (usually named include)"

为了运行,您还需要编译libiconv或从其他地方下载libiconv.dll。lib目录中的libzbar64-0.dlllibiconv.dll都必须复制到您的二进制文件所在的目录。

用法

扫描图像以查找二维码

extern crate zbars;

use zbars::prelude::*;

pub fn main() {
    let mut image = ZBarImage::from_path("test/qrcode.png")
        .expect("unable to create image");

    let image_scanner = ImageScanner::builder()
        .with_config(ZBarSymbolType::ZBAR_QRCODE, ZBarConfig::ZBAR_CFG_ENABLE, 1)
        .build();

    let symbol_set = image_scanner.scan_image(&mut 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);
                })
        });
}

依赖项

~0.3–5MB
~57K SLoC