[Python] Générer un code QR en mémoire

Lors de la génération d'un code QR et du renvoi avec l'API, etc. ou lors de l'envoi d'un e-mail Le processus d'enregistrement dans un fichier une fois et de lecture est inclus. Dans le cas de ce traitement, il y a des problèmes de vitesse dans les E / S et des problèmes lors du traitement parallèle.

Avec le module BytesIO, vous pouvez générer une image en mémoire sans avoir à la cracher une seule fois dans un fichier.

environnement

Nécessite des bibliothèques qrcode et Pillow.

pip install qrcode pillow

produire

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")

Générez simplement un flux binaire avec BytesIO () et créez, lisez et enregistrez comme un flux de fichiers.

StringIO etc. existent également et peuvent stocker des chaînes. Il prend également en charge la syntaxe with.

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()

Disons adieu aux fichiers intermédiaires.

Recommended Posts

[Python] Générer un code QR en mémoire
Générer du code QR en Python
Générer une vignette arrondie en Python
Commande pour générer un code QR
Générer une distribution U en Python
Code de caractère appris en Python
Générez 8 * 8 (64) cubes avec Blender Python
Rechercher les fuites de mémoire dans Python
Formater automatiquement le code Python avec Vim
Générer le notebook Jupyter ".ipynb" en Python
Ecrire le code de test du sélénium en python
Générer du code QR à l'aide du "qrcode" de Python
Tests de code dans le temps en Python
Code de vérification de la série Fourier écrit en Python
Fuite de mémoire dans Python Jupyter Lab (Notebook)?
Générer une URL signée AWS-S3 (limitée dans le temps) en Python
Générer automatiquement un commentaire de chaîne de document Python avec Emacs
Lors de l'examen de l'utilisation de la mémoire dans Python 3
Module pour générer le mot N-gramme en Python
Générer une classe à partir d'une chaîne en Python
Générer un langage C à partir d'une expression S avec Python
Obtenir la liste de codes EDINET en Python
Python en optimisation
CURL en Python
Métaprogrammation avec Python
Python 3.3 avec Anaconda
Géocodage en python
Méta-analyse en Python
Unittest en Python
Époque en Python
Discord en Python
Allemand en Python
DCI en Python
code de caractère python
tri rapide en python
nCr en python
N-Gram en Python
Programmation avec Python
Plink en Python
Constante en Python
FizzBuzz en Python
[Python] Code conscient des algorithmes
Sqlite en Python
Étape AIC en Python
LINE-Bot [0] en Python
CSV en Python
Assemblage inversé avec Python
Réflexion en Python
Créons une base de données clients où le code QR est automatiquement émis en Python
Constante en Python
nCr en Python.
format en python
Scons en Python 3
Puyopuyo en python
python dans virtualenv
PPAP en Python
Quad-tree en Python
Réflexion en Python