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.1-py2.py3-none-win_amd64.whl (797.9 kB view details)

Uploaded Python 2Python 3Windows x86-64

pyzbar-0.1.1-py2.py3-none-win32.whl (830.7 kB view details)

Uploaded Python 2Python 3Windows x86

pyzbar-0.1.1-py2.py3-none-any.whl (13.0 kB view details)

Uploaded Python 2Python 3

File details

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

File metadata

File hashes

Hashes for pyzbar-0.1.1-py2.py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 747928618b42b92320542f01d820f733f66286705e1d5314909ecb33fc113e27
MD5 7ad3ea082cb2874443df5c2a6f506835
BLAKE2b-256 c82c9864aa5a9a0b42f3dd89a857d0774817402a236a6e1dc83d2df552ade853

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyzbar-0.1.1-py2.py3-none-win32.whl
Algorithm Hash digest
SHA256 5d9311c8b08a983aed5f070b8b05d0eedcf815315396e8f9be435f32942c0914
MD5 cec70a7664a8791f0ba8f376e28275a5
BLAKE2b-256 042847082253f5a5f9f738ee21d256301c429536dd76fa329cf7a666a0057a83

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyzbar-0.1.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 b4183b7cdf20622a3efdac98a95a9f7fcefd237a9a232cfbc5aac6eeb23839d3
MD5 d4dfceb6da9f33d9ee9d2c1c1dea1b17
BLAKE2b-256 fdfeb7ca80e2f1df151127e36bc14fcf81b1c7a69b008dfda69ba3ec2351db2f

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