Welcome to mirror list, hosted at ThFree Co, Russian Federation.

dev.gajim.org/gajim/gajim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormjk <mjk@disroot.org>2023-05-06 12:39:30 +0300
committermjk <mjk@disroot.org>2023-05-10 12:49:45 +0300
commitef9479b9c6ed2ba79fa991c8d275162555b89062 (patch)
treeabc40368abcaf94b0d8d724ada476737f32a9aac
parenteb0257bfcd36ade077d58fa0514862c4d84cac72 (diff)
perf: QR codes: Avoid roundtrip to PNG in storage and back
-rw-r--r--gajim/common/helpers.py13
1 files changed, 6 insertions, 7 deletions
diff --git a/gajim/common/helpers.py b/gajim/common/helpers.py
index 8962f5a13..fbff1943e 100644
--- a/gajim/common/helpers.py
+++ b/gajim/common/helpers.py
@@ -48,7 +48,6 @@ import re
import socket
import string
import sys
-import tempfile
import unicodedata
import weakref
import webbrowser
@@ -83,6 +82,7 @@ from nbxmpp.structs import CommonError
from nbxmpp.structs import ProxyData
from packaging.requirements import Requirement
from packaging.version import Version as V
+from qrcode.image.pil import PilImage as QrcPilImage
from gajim.common import app
from gajim.common import configpaths
@@ -370,9 +370,6 @@ def get_contact_dict_for_account(account: str) -> dict[str, types.BareContact]:
def generate_qr_code(content: str) -> GdkPixbuf.Pixbuf | None:
- image_path = os.path.join(
- tempfile.gettempdir(),
- f'{get_random_string()}.png')
qr = qrcode.QRCode(version=None,
error_correction=qrcode.constants.ERROR_CORRECT_L,
box_size=6,
@@ -380,9 +377,11 @@ def generate_qr_code(content: str) -> GdkPixbuf.Pixbuf | None:
qr.add_data(content)
qr.make(fit=True)
- img = qr.make_image(fill_color='black', back_color='white')
- img.save(image_path)
- return GdkPixbuf.Pixbuf.new_from_file(image_path)
+ img = qr.make_image(image_factory=QrcPilImage).convert('RGB')
+ return GdkPixbuf.Pixbuf.new_from_bytes(
+ GLib.Bytes.new(img.tobytes()),
+ GdkPixbuf.Colorspace.RGB, False, 8,
+ img.width, img.height, img.width*3)
def play_sound(sound_event: str,