Beispiel #1
0
    def takePictureCb(self, requestCode, resultCode, intent):
        if requestCode != CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE:
            return

        if resultCode != Activity.RESULT_OK:
            displayError(_("No image taken."))
            return

        stream = ByteArrayOutputStream()
        done = intent.getExtras().get('data').compress(
            CompressFormat.PNG, 100, stream)
        stream.close()

        if not done:
            displayError(_("Failed to compress image."))
            return
        ba = stream.toByteArray()

        stream = None
        img = None
        try:
            stream = StringIO(str(bytearray(ba)))
            img = Image.open(stream)
        except IOError as e:
            if stream:
                stream.close()
            displayError(e)
            return

        codes = img_decode.read_qr_codes(img)
        stream.close()

        if len(codes) < 1:
            displayError(_("No QR codes found."))
        else:
            self.receiptInput.text = codes[0]
            self.selectInputType('QR')
Beispiel #2
0
    def loadReceiptCb(self, path, filename):
        if not filename or len(filename) < 1:
            return

        full = os.path.join(path, filename[0])
        try:
            with open(full, mode='rb') as f:
                img = Image.open(f)
                codes = img_decode.read_qr_codes(img)
                if len(codes) < 1:
                    displayError(_("No QR codes found."))
                else:
                    self.receiptInput.text = codes[0]
                    self.selectInputType('QR')

            App.get_running_app().curSearchPath = path
        except IOError:
            try:
                with open(full) as f:
                    self.receiptInput.text = f.read().strip()
            except (IOError, UnicodeDecodeError) as e:
                displayError(e)

        self.dismissPopup()