zbar

zbar is a library for decoding barcode symbols. http://zbar.sourceforge.net/

zbar is provided as a tcl package together with Androwish. Documentation for the zbar tcl package can be found here .

In case someone wants to build zbar for Linux manually, chw provided the following instructions:

"chw 2015-10-24: Should be possible with the latest check-in http://www.androwish.org/index.html/info/c82e1d09884d0458 . I've tested manually building it on a CentOS6 system with these commands:

    $ gcc -fPIC -DUSE_TCL_STUBS=1 -DUSE_TK_STUBS=1 -DTCL_THREADS=1 -DPACKAGE=\"zbar\" -DPACKAGE_VERSION=\"0.10\" -c tclzbar.c
    $ gcc -shared -o libtclzbar.so tclzbar.o -lzbar -ltclstub8.5 -ltkstub8.5
    $ wish8.5
    % load ./libtclzbar.so Zbar

"

dzach 2015-10-25: To build zbar manually in a local directory (I had problems building it with autoconf), I brought the necessary files tclzbar.c and zbar.h in a local dir, and linked locally the /usr/lib/libzbar.so.0.2.0 lib (can also be copied) as libzbar.so. /usr/lib/libzbar.so.0.2.0 was installed earlier using:

    $ sudo apt-get install zbarcam

from Ubuntu's repositories.

Using chw's instructions from above, the compile/link command lines were modified to look for the files in the local dir:

    $ gcc -I`pwd` -fPIC -DUSE_TCL_STUBS=1 -DUSE_TK_STUBS=1 -DTCL_THREADS=1 -DPACKAGE=\"zbar\" -DPACKAGE_VERSION=\"0.10\" -c tclzbar.c
    $ gcc -shared -o libtclzbar.so tclzbar.o -lzbar -ltclstub8.5 -ltkstub8.5 -L`pwd`

To use zbar as a TCL package, a pkgIndex.tcl file was created, with the following contents:

    package ifneeded zbar 0.10 \
        [list load [file join $dir libtclzbar[info sharedlibextension]] Zbar]

To test zbar, I took a photo of a barcode from an item, e.g. food package, named it barcode_test.jpg, and then entered:

    $ package require zbar
    0.10
    $ package req img::jpeg
    1.4.4
    $ image create photo test_img -file barcode_test.jpg
    test_img
    $ zbar::decode test_img
    81 EAN13 2220063011920 ; # this is the result: milliseconds, symbol type, barcode