Renvoyez les données d'image avec Flask of Python et dessinez-les dans l'élément canvas de HTML

Dessinez les données d'image acquises par Flask of Python dans l'élément canvas de HTML.

Chose que tu veux faire

Lisez les données d'image enregistrées dans Google Cloud Storage avec les fonctions Cloud et dessinez-les dans l'élément canvas de votre HTML. Les fonctions cloud lit d'abord l'image au format blob. Convertissez-le en png ou jpg, renvoyez-le avec flask et dessinez-le avec l'élément canvas.

Charger et télécharger des fichiers de stockage avec les fonctions Cloud

Je n'ai pas hésité car les documents officiels sont volumineux ici.

https://cloud.google.com/storage/docs/downloading-objects#code-samples

main.py


from google.cloud import storage

def download_blob(bucket_name, source_blob_name, destination_file_name):
    """Downloads a blob from the bucket."""
    # bucket_name = "your-bucket-name"
    # source_blob_name = "storage-object-name"
    # destination_file_name = "local/path/to/file"

    storage_client = storage.Client()

    bucket = storage_client.bucket(bucket_name)
    #bucket_nom est le nom de la destination de stockage créée dans Storage. Défini manuellement
    
    blob = bucket.blob(source_blob_name)#Dans le nom de fichier court
    blob.download_to_filename(destination_file_name)

    print(
        "Blob {} downloaded to {}.".format(
            source_blob_name, destination_file_name
        )
    )

Une fois exécuté, le fichier sera téléchargé localement.

Au lieu de télécharger en un seul fichier, retournez au format jpg avec flask et téléchargez

Il a commencé à rester coincé ici. En bref, lisez le blob en octets, ajoutez-y un en-tête, etc. À ce moment-là, utilisez le module send_file de Flask. Non, tu ne le sais pas.

Cette fois, l'hébergement est effectué par les fonctions Cloud de GCP, il n'y a donc pas d'app.run () etc. Cependant, si vous hébergez ceci, la fonction download_blob () fonctionnera si vous frappez une certaine URL.

main.py


from google.cloud import storage
import io
from flask import send_file

def download_blob(request):
    """Downloads a blob from the bucket."""
    bucket_name = "your-bucket-name"
    source_blob_name = "storage-object-name"

    storage_client = storage.Client()

    bucket = storage_client.bucket(bucket_name)
    #bucket_nom est le nom de la destination de stockage créée dans Storage. Défini manuellement
    
    blob = bucket.blob(source_blob_name)#Dans le nom de fichier court
    image_binary= blob.download_as_bytes()
    return send_file(
            io.BytesIO(image_binary),
            mimetype='image/jpeg',
            as_attachment=True,
            attachment_filename='%s.jpg' % source_blob_name)

Reportez-vous aux informations suivantes pour le déploiement avec les fonctions Cloud. https://qiita.com/NP_Systems/items/f0f6de899a84431685ff

Si vous avez une bibliothèque installée, tapez simplement ce qui suit pour l'émuler localement.

teriminal.


functions-framework --target=hello  --port=8081

Appuyez sur l'URL hébergée et l'image sera téléchargée. Mais contrairement à un seul fichier, il revient. Utilisez ceci pour dessiner ce que vous recevez sur la toile

Représentation sur élément de toile

Ceci est également assez bouché. Même si c'est une chose si simple. Ce site a été vraiment utile. https://stackoverflow.com/questions/57014217/putting-an-image-from-flask-to-an-html5-canvas

C'est php, mais html est similaire.

index.php


<?php get_header(); ?>
<main>
<article>
  <section>
       <input type="button" value="Start" onclick="main();"/>
        <canvas></canvas>
  </section>
</article>
</main>

<script language="javascript" type="text/javascript">

    function main(){
      var canvas = document.getElementsByTagName('canvas');
      var ctx = canvas[0].getContext('2d');

      var img = new Image();
      img.src = 'http://0.0.0.0:8081';//URL hébergée sur Flask

      img.onload = function() {
        img.style.display = 'none'; //Je ne sais pas
        console.log('WxH: ' + img.width + 'x' + img.height)

        ctx.drawImage(img, 0, 0);
        var imageData = ctx.getImageData(0, 0, img.width*2, img.height*2)

        for(x = 0 ; x < 100 ; x += 10) {
          for(y = 0 ; y < 100 ; y += 10) {
             ctx.putImageData(imageData, x, y);
          }
        }
      };    }
</script>
<?php get_footer(); ?>

Impressions

Non, c'était une chose tellement simple, mais je suis resté coincé. Je sens que je comprends peu les blob et png.

Recommended Posts

Renvoyez les données d'image avec Flask of Python et dessinez-les dans l'élément canvas de HTML
Essayez d'imaginer les données d'élévation du National Land Research Institute avec Python
POSTER l'image avec json et la recevoir avec flask
Lisez les données du lecteur NFC connecté à Raspberry Pi 3 avec Python et envoyez-les à openFrameworks avec OSC
GAE --Avec Python, faites pivoter l'image en fonction des informations de rotation d'EXIF et importez-la dans Cloud Storage.
J'ai essayé de trouver l'entropie de l'image avec python
Exportez le contenu de ~ .xlsx dans le dossier en HTML avec Python
Convertissez le résultat de python optparse en dict et utilisez-le
mail html avec image à envoyer avec python
Traitez le fichier gzip UNLOADed avec Redshift avec Python de Lambda, gzipez-le à nouveau et téléchargez-le sur S3
Envoyer et recevoir des données d'image au format JSON en Python sur le réseau
[python] Envoyez l'image capturée de la caméra Web au serveur et enregistrez-la
J'ai exécuté GhostScript avec python, divisé le PDF en pages et l'ai converti en image JPEG.
J'ai essayé d'obtenir et d'analyser les données statistiques de la nouvelle Corona avec Python: données de l'Université John's Hopkins
L'histoire de la création d'un outil pour charger une image avec Python ⇒ l'enregistrer sous un autre nom
Mettez à jour les données en les téléchargeant sur s3 d'aws avec une commande, et supprimez les données utilisées (en chemin)
[Note] Exportez le html du site avec python.
[Introduction à Python] Comment obtenir l'index des données avec l'instruction for
(Journal 1) Comment créer, parcourir et enregistrer des données dans la base de données SQL du service Microsoft Azure avec python
Extraire le tableau des fichiers image avec OneDrive et Python
Comment récupérer des données d'image de Flickr avec Python
Visualisez la gamme d'insertions internes et externes avec python
Convertissez l'image au format .zip en PDF avec Python
[Python Data Frame] Lorsque la valeur est vide, remplissez-la avec la valeur d'une autre colonne.
Construisez un serveur API pour vérifier le fonctionnement de l'implémentation frontale avec python3 et Flask
Comment identifier l'élément avec le plus petit nombre de caractères dans une liste Python?
Extraire des images et des tableaux de pdf avec python pour réduire la charge de reporting
J'ai essayé d'automatiser la mise à jour de l'article du blog Livedoor avec Python et sélénium.
C'était un peu difficile de faire flacon avec la version docker de nginx-unit
Créez rapidement un tableau de bord d'analyse de données Python avec Streamlit et déployez-le sur AWS
Traitement d'image avec Python (j'ai essayé de le binariser en art mosaïque 0 et 1)
Je voulais juste extraire les données de la date et de l'heure souhaitées avec Django
Comment compter le nombre d'occurrences de chaque élément de la liste en Python avec poids
J'ai essayé de comparer la vitesse de traitement avec dplyr de R et pandas de Python
Il est facile d'exécuter SQL avec Python et de générer le résultat dans Excel
Essayez de gratter les données COVID-19 Tokyo avec Python
J'ai essayé la "correction gamma" de l'image avec Python + OpenCV
[Maintenance de l'environnement Python] De-NeoBundle. Préparez l'environnement du plug complémentaire super pratique jedi-vim avec dein et réglez-le pour qu'il soit confortable
Comment dessiner de manière interactive un pipeline d'apprentissage automatique avec scikit-learn et l'enregistrer au format HTML
Application de Python: Nettoyage des données Partie 3: Utilisation d'OpenCV et prétraitement des données d'image
Obtenez de manière récursive la liste Excel dans un dossier spécifique avec python et écrivez-la dans Excel.
Débarrassez-vous des données sales avec Python et les expressions régulières
Résolvez le livre en spirale (algorithme et structure de données) avec python!
L'histoire du rubyiste aux prises avec Python :: Dict data with pycall
[Homologie] Comptez le nombre de trous dans les données avec Python
Créer un environnement Python et transférer des données vers le serveur
Essayez d'automatiser le fonctionnement des périphériques réseau avec Python
[Jouons avec Python] Traitement d'image en monochrome et points
[Python / Ruby] Comprendre le code Comment obtenir des données en ligne et les écrire au format CSV
J'ai créé une fonction pour découper l'image de python openCV, alors veuillez l'utiliser.
[Introduction to Data Scientists] Bases de Python ♬ Fonctions et classes
Le processus de création et d'amélioration du code Python orienté objet
Je veux connaître la nature de Python et pip
Je veux découper uniquement le visage d'une image de personne avec Python et l'enregistrer ~ Détection de visage et rognage avec face_recognition ~
Obtenez des données supplémentaires vers LDAP avec python (Writer et Reader)
Jouez avec le mécanisme de mot de passe de GitHub Webhook et Python