def image_to_base64(self, img: QImage) -> bytes: quality = self.settings.int_value(default_settings.frame_quality) byte_arr = QByteArray() buffer = QBuffer(byte_arr) buffer.open(QIODevice.WriteOnly) img.save(buffer, 'jpg', quality) return byte_arr.toBase64().data()
def encode_image(image: QImage) -> str: image_bytes = QByteArray() buffer = QBuffer(image_bytes) buffer.open(QIODevice.WriteOnly) # noinspection PyTypeChecker image.save(buffer, "PNG") # writes pixmap into bytes in PNG format encoded_bytes = image_bytes.toBase64() encoded_string = encoded_bytes.data().decode() return encoded_string
def encode_image(image: QImage) -> str: image_bytes = QByteArray() buffer = QBuffer(image_bytes) buffer.open(QIODevice.WriteOnly) # type: ignore # writes pixmap into bytes in PNG format image.save(buffer, "PNG") # type: ignore raw_bytes = buffer.data().data() b64_bytes = standard_b64encode(raw_bytes) b64_string = b64_bytes.decode('UTF-8') return b64_string
def readImageQR(self, image): buffer = QBuffer() # TODO: the same code is present in qr_scanner.py -> move to one place buffer.open(QBuffer.ReadWrite) image.save(buffer, "BMP") try: pillow_image = Image.open(io.BytesIO(buffer.data())) except UnidentifiedImageError: logging.warning(self.tr("Image format isn't supported")) return False barcodes = pyzbar.decode(pillow_image, symbols=[pyzbar.ZBarSymbol.QRCODE]) if barcodes: self.qr_data_available.emit(barcodes[0].data.decode('utf-8')) return True else: return False
def decodeQR(self, qr_image: QImage): cropped = qr_image.copy( self.calculate_center_square(qr_image).toRect()) # TODO: the same code is present in slips.py -> move to one place buffer = QBuffer() buffer.open(QBuffer.ReadWrite) cropped.save(buffer, "BMP") try: pillow_image = Image.open(io.BytesIO(buffer.data())) except UnidentifiedImageError: print("Image format isn't supported") return barcodes = pyzbar.decode(pillow_image, symbols=[pyzbar.ZBarSymbol.QRCODE]) if barcodes: self.decodedQR.emit(barcodes[0].data.decode('utf-8'))
def fromqimage(im): """ :param im: A PIL Image object, or a file name (given either as Python string or a PyQt string object) """ buffer = QBuffer() buffer.open(QIODevice.ReadWrite) # preserve alpha channel with png # otherwise ppm is more friendly with Image.open if im.hasAlphaChannel(): im.save(buffer, "png") else: im.save(buffer, "ppm") b = BytesIO() b.write(buffer.data()) buffer.close() b.seek(0) return Image.open(b)
def Base64ToBytes(filename): image = QImage(filename) ba = QByteArray() buff = QBuffer(ba) image.save(buff, "PNG") return ba.toBase64().data()