Ejemplo n.º 1
0
 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()
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
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
Ejemplo n.º 4
0
 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
Ejemplo n.º 5
0
 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'))
Ejemplo n.º 6
0
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)
Ejemplo n.º 7
0
def Base64ToBytes(filename):
    image = QImage(filename)
    ba = QByteArray()
    buff = QBuffer(ba)
    image.save(buff, "PNG")
    return ba.toBase64().data()