--- qrtools.py.orig 2020-07-15 18:00:04 UTC +++ qrtools.py @@ -29,6 +29,7 @@ import sys import time import shutil import hashlib +import numpy as np try: import zbar except ImportError: @@ -210,35 +211,19 @@ class QR(object): def decode(self, filename=None, image=None): self.filename = filename or self.filename if self.filename is not None or image is not None: - scanner = zbar.ImageScanner() - # configure the reader - scanner.parse_config('enable') - # obtain image data - if image is not None: - pil = image.convert('L') - else: - pil = Image.open(self.filename).convert('L') - width, height = pil.size - try: - raw = pil.tostring() - except: - raw = pil.tobytes() - # wrap image data - image = zbar.Image(width, height, 'Y800', raw) - # scan the image for barcodes + image = np.array(Image.open(self.filename).convert('L')) + scanner = zbar.Scanner() result = scanner.scan(image) + # extract results if result == 0: return False else: - for symbol in image: - pass - # clean up del(image) - #Assuming data is encoded in utf8 - self.data = symbol.data - self.data_type = self.data_recognise() - return True + for res in result: + self.data = res.data.decode('utf8') + self.data_type = self.data_recognise() + return True else: return False