Skip to main content

A ctypes-based wrapper around the zbar barcode reader.

Project description

Python Versions PyPI version Travis status Coverage Status

A ctypes-based Python wrapper around the zbar barcode reader.

The zbar wrapper is stuck in Python 2.x-land. The zbarlight wrapper doesn’t provide support for Windows and depends upon Pillow. This ctypes-based wrapper brings zbar to Python 2.7 and to Python 3.4 or greater.

Installation

The zbar DLLs are included with the Windows Python wheels. On other operating systems, you will need to install the zbar shared library.

On Mac OS X:

brew install zbar

On Linux:

sudo apt-get install libzbar0

Install this Python wrapper; use the second form to install dependencies of the command-line scripts:

pip install pyzbar
pip install pyzbar[scripts]

Example usage

The decode function accepts instances of PIL.Image.

>>> from pyzbar.pyzbar import decode
>>> from PIL import Image
>>> decode(Image.open('pyzbar/tests/code128.png'))
[Decoded(data=b'Foramenifera', type='CODE128'),
 Decoded(data=b'Rana temporaria', type='CODE128')]

It also accepts instances of numpy.ndarray, which might come from loading images using OpenCV.

>>> import cv2
>>> decode(cv2.imread('pyzbar/tests/code128.png'))
[Decoded(data=b'Foramenifera', type='CODE128'),
 Decoded(data=b'Rana temporaria', type='CODE128')]

You can also provide a tuple (pixels, width, height), where the image data is eight bits-per-pixel.

>>> image = cv2.imread('pyzbar/tests/code128.png')
>>> height, width = image.shape[:2]

>>> # 8 bpp by considering just the blue channel
>>> decode((image[:, :, 0].astype('uint8').tobytes(), width, height))
[Decoded(data=b'Foramenifera', type='CODE128'),
 Decoded(data=b'Rana temporaria', type='CODE128')]

>>> # 8 bpp by converting image to greyscale
>>> grey = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
>>> decode((grey.tobytes(), width, height))
[Decoded(data=b'Foramenifera', type='CODE128'),
 Decoded(data=b'Rana temporaria', type='CODE128')]

>>> # If you don't provide 8 bpp
>>> decode((image.tobytes(), width, height))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/lawh/projects/pyzbar/pyzbar/pyzbar.py", line 102, in decode
    raise PyZbarError('Unsupported bits-per-pixel [{0}]'.format(bpp))
pyzbar.pyzbar_error.PyZbarError: Unsupported bits-per-pixel [24]

zbar’s default behaviour is (I think) to decode all symbol types. You can ask zbar to look for just your symbol types (I have no idea of the effect of this on performance)

>>> from pyzbar.pyzbar import ZBarSymbol
>>> # Look for just qrcode
>>> decode(Image.open('pyzbar/tests/qrcode.png'), symbols=[ZBarSymbol.QRCODE])
[Decoded(data=b'Thalassiodracon', type='QRCODE')]

>>> # If we look for just code128, the qrcodes in the image will not be detected
>>> decode(Image.open('pyzbar/tests/qrcode.png'), symbols=[ZBarSymbol.CODE128])
[]

License

pyzbar is distributed under the MIT license (see LICENCE.txt). The zbar shared library is distributed under the GNU Lesser General Public License, version 2.1 (see zbar-LICENCE.txt).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

pyzbar-0.1.3-py2.py3-none-win_amd64.whl (1.6 MB view details)

Uploaded Python 2Python 3Windows x86-64

pyzbar-0.1.3-py2.py3-none-win32.whl (800.1 kB view details)

Uploaded Python 2Python 3Windows x86

pyzbar-0.1.3-py2.py3-none-any.whl (22.0 kB view details)

Uploaded Python 2Python 3

File details

Details for the file pyzbar-0.1.3-py2.py3-none-win_amd64.whl.

File metadata

File hashes

Hashes for pyzbar-0.1.3-py2.py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 870c660151fd30bcbad8c943dc7d925f482981703e7448ed2a876a9f23079711
MD5 62df6054d1c967e2a1a7cb6d26d27195
BLAKE2b-256 ea9f8851952977e7126dcff293721a3d6b5abd82ae4704fd3f19c9b4ff22cbe4

See more details on using hashes here.

File details

Details for the file pyzbar-0.1.3-py2.py3-none-win32.whl.

File metadata

File hashes

Hashes for pyzbar-0.1.3-py2.py3-none-win32.whl
Algorithm Hash digest
SHA256 08eac6ff1205bdcd2f49a0897d33ac3b2cf0b5ea0da9f92a22f5b2589ac88025
MD5 b9950828726fb52841628a8a35ca32ba
BLAKE2b-256 5e5e736a33102147cb215683d259b0b3c51fe954560860906d4db6cbf06167d0

See more details on using hashes here.

File details

Details for the file pyzbar-0.1.3-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for pyzbar-0.1.3-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 f6889e830b507251460746c40eba24f09103598132df6d70120fc3791afecd51
MD5 2682b29b919df8729b5be174232caf26
BLAKE2b-256 99280e3df4a8e250bf780a6acb2bc86426c490981a4e6f3977d5935893fbc904

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page