[Python] Generiert QR-Code im Speicher

Wenn Sie einen QR-Code generieren und mit API usw. zurücksenden oder eine E-Mail senden Der Vorgang des einmaligen Speicherns und Lesens in einer Datei ist enthalten. Bei dieser Verarbeitung treten Probleme mit der Geschwindigkeit der E / A und Probleme bei der Parallelverarbeitung auf.

Mit dem BytesIO-Modul können Sie ein Bild im Speicher generieren, ohne es einmal in eine Datei ausspucken zu müssen.

Umgebung

Benötigt qrcode und Pillow Bibliotheken.

pip install qrcode pillow

Generieren

from io import BytesIO
import base64
import qrcode


class QRImage():

    @staticmethod
    def to_bytes(text: str) -> bytes:
        stream = BytesIO()
        img = qrcode.make(text)
        img.save(fp, "PNG")
        stream.seek(0)
        byte_img = stream.read()
        stream.close()
        return byte_img

    @classmethod
    def to_b64(cls, text: str) -> bytes:
        byte = cls.to_bytes(text)
        return base64.b64encode(byte).decode("utf-8")

if __name__ == "__main__":
    binary = QRImage.to_bytes(text="some_text")
    base64_encoded = QRImage.to_b64(text="some_text")

Generieren Sie einfach einen Binär-Stream mit BytesIO () und erstellen, lesen und speichern Sie ihn wie einen Dateistream.

StringIO usw. existieren ebenfalls und können Strings speichern. Es unterstützt auch die with-Syntax.

from io import StringIO

def main():
    with StringIO() as fp:
        fp.write("Hello")
        print(fp.closed)     # True
        print(fp.getvalue()) # Hello
    print(fp.closed)         # False

main()

Verabschieden wir uns von Zwischendateien.

Recommended Posts

[Python] Generiert QR-Code im Speicher
Generieren Sie QR-Code in Python
Generieren Sie in Python ein abgerundetes Miniaturbild
Befehl zum Generieren von QR-Code
Generieren Sie eine U-Verteilung in Python
In Python gelernter Zeichencode
Generieren Sie 8 * 8 (64) Cubes mit Blender Python
Überprüfen Sie Python auf Speicherlecks
Formatieren Sie Python-Code automatisch mit Vim
Generieren Sie das Jupyter-Notizbuch ".ipynb" in Python
Schreiben Sie Selentestcode in Python
Generieren Sie QR-Code mit Pythons "qrcode"
Code-Tests rund um die Uhr in Python
In Python geschriebener Fourier-Serien-Verifizierungscode
Speicherverlust im Python Jupyter Lab (Notebook)?
Generieren Sie eine AWS-S3-signierte (zeitlich begrenzte) URL in Python
Python Docstring-Kommentar automatisch mit Emacs generieren
Wenn Sie sich die Speichernutzung in Python 3 ansehen
Modul zum Generieren des Wortes N-Gramm in Python
Generieren Sie eine Klasse aus einer Zeichenfolge in Python
Generieren Sie mit Python eine C-Sprache aus dem S-Ausdruck
Ruft die EDINET-Codeliste in Python ab
Python in der Optimierung
CURL in Python
Metaprogrammierung mit Python
Python 3.3 mit Anaconda
Geokodierung in Python
Metaanalyse in Python
Unittest in Python
Epoche in Python
Zwietracht in Python
Deutsch in Python
DCI in Python
Python-Zeichencode
Quicksort in Python
nCr in Python
N-Gramm in Python
Programmieren mit Python
Plink in Python
Konstante in Python
FizzBuzz in Python
[Python] Code, der Algorithmen kennt
SQLite in Python
Schritt AIC in Python
LINE-Bot [0] in Python
CSV in Python
Reverse Assembler mit Python
Reflexion in Python
Erstellen wir eine Kundendatenbank, in der QR-Code automatisch in Python ausgegeben wird
Konstante in Python
nCr in Python.
Format in Python
Scons in Python 3
Puyopuyo in Python
Python in Virtualenv
PPAP in Python
Quad-Tree in Python
Reflexion in Python