Geben Sie die Bilddaten mit Flask of Python zurück und zeichnen Sie sie in das Canvas-Element von HTML

Zeichnen Sie die von Flask of Python erfassten Bilddaten in das Canvas-Element von HTML.

Was du machen willst

Lesen Sie die in Google Cloud Storage mit Cloud-Funktionen gespeicherten Bilddaten und zeichnen Sie sie in das Canvas-Element Ihres HTML-Codes. Cloud-Funktionen lesen das Bild zuerst im Blob-Format. Konvertieren Sie dies in png oder jpg, geben Sie es mit dem Kolben zurück und zeichnen Sie es mit dem Canvas-Element.

Laden und Herunterladen von Speicherdateien mit Cloud-Funktionen

Ich habe nicht gezögert, weil die offiziellen Dokumente hier umfangreich sind.

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_name ist der Name des in Storage erstellten Speicherziels. Manuell einstellen
    
    blob = bucket.blob(source_blob_name)#Kurz gesagt Dateiname
    blob.download_to_filename(destination_file_name)

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

Bei der Ausführung wird die Datei lokal heruntergeladen.

Anstatt als einzelne Datei herunterzuladen, geben Sie als JPG mit Flasche zurück und laden Sie sie herunter

Es fing an, hier hängen zu bleiben. Kurz gesagt, lesen Sie den Blob in Bytes, fügen Sie einen Header usw. hinzu und geben Sie ihn als Bild zurück. Verwenden Sie zu diesem Zeitpunkt das send_file-Modul von Flask. Nein, das weißt du nicht.

Dieses Mal erfolgt das Hosting über die Cloud-Funktionen von GCP, sodass es keine app.run () usw. gibt. Wenn Sie dies jedoch hosten, funktioniert die Funktion download_blob (), wenn Sie eine bestimmte URL eingeben.

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_name ist der Name des in Storage erstellten Speicherziels. Manuell einstellen
    
    blob = bucket.blob(source_blob_name)#Kurz gesagt Dateiname
    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)

Informationen zur Bereitstellung mit Cloud-Funktionen finden Sie im Folgenden. https://qiita.com/NP_Systems/items/f0f6de899a84431685ff

Wenn Sie die Bibliothek usw. installiert haben, geben Sie einfach Folgendes ein, um sie lokal zu emulieren.

teriminal.


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

Wenn Sie auf die gehostete URL klicken, wird das Bild heruntergeladen. Im Gegensatz zu einer einzelnen Datei wird sie jedoch zurückgegeben. Verwenden Sie diese Option, um das, was Sie erhalten, auf die Leinwand zu zeichnen

Darstellung auf Leinwandelement

Dies ist auch ziemlich verstopft. Auch wenn es so einfach ist. Diese Seite war wirklich hilfreich. https://stackoverflow.com/questions/57014217/putting-an-image-from-flask-to-an-html5-canvas

Es ist PHP, aber HTML ist ähnlich.

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';//Auf Flask gehostete URL

      img.onload = function() {
        img.style.display = 'none'; //Ich weiß es nicht
        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(); ?>

Impressionen

Nein, es war so einfach, aber ich blieb stecken. Ich habe das Gefühl, dass ich wenig Verständnis für Blob und PNG habe.

Recommended Posts

Geben Sie die Bilddaten mit Flask of Python zurück und zeichnen Sie sie in das Canvas-Element von HTML
Versuchen Sie, die Höhendaten des National Land Research Institute mit Python abzubilden
POST das Bild mit json und erhalte es mit der Flasche
Lesen Sie die Daten des NFC-Lesegeräts, das mit Python an Raspberry Pi 3 angeschlossen ist, und senden Sie sie mit OSC an openFrameworks
GAE - Drehen Sie mit Python das Bild basierend auf den Rotationsinformationen von EXIF und laden Sie es in den Cloud-Speicher hoch.
Ich habe versucht, die Entropie des Bildes mit Python zu finden
Geben Sie den Inhalt von ~ .xlsx im Ordner mit Python in HTML aus
Konvertieren Sie das Ergebnis von Python Optparse, um es zu diktieren und zu verwenden
HTML-Mail mit Bild zum Senden mit Python
Verarbeiten Sie die mit Redshift entladene gzip-Datei mit Python of Lambda, gzipen Sie sie erneut und laden Sie sie in S3 hoch
Senden und Empfangen von Bilddaten als JSON in Python über das Netzwerk
[Python] Senden Sie das von der Webkamera aufgenommene Bild an den Server und speichern Sie es
Ich habe GhostScript mit Python ausgeführt, das PDF in Seiten aufgeteilt und es in ein JPEG-Bild konvertiert.
Ich habe versucht, die statistischen Daten der neuen Corona mit Python abzurufen und zu analysieren: Daten der Johns Hopkins University
Die Geschichte, ein Tool zum Laden von Bildern mit Python zu erstellen ⇒ Speichern unter
Laden Sie Daten mit einem Befehl und einer Aktualisierung auf s3 von aws hoch und löschen Sie die verwendeten Daten (unterwegs).
[Hinweis] Exportieren Sie das HTML der Site mit Python.
[Einführung in Python] So erhalten Sie den Datenindex mit der for-Anweisung
(Tagebuch 1) Erstellen, Durchsuchen und Registrieren von Daten in der SQL-Datenbank des Microsoft Azure-Dienstes mit Python
Extrahieren Sie die Tabelle der Bilddateien mit OneDrive & Python
So kratzen Sie Bilddaten von Flickr mit Python
Visualisieren Sie den Bereich der internen und externen Einfügungen mit Python
Konvertieren Sie das Bild in .zip mit Python in PDF
[Python Data Frame] Wenn der Wert leer ist, füllen Sie ihn mit dem Wert einer anderen Spalte.
Erstellen Sie einen API-Server, um den Betrieb der Front-Implementierung mit Python3 und Flask zu überprüfen
Wie identifiziere ich das Element mit der geringsten Anzahl von Zeichen in einer Python-Liste?
Extrahieren Sie Bilder und Tabellen mit Python aus PDF, um die Berichtslast zu verringern
Ich habe versucht, das Artikel-Update des Livedoor-Blogs mit Python und Selen zu automatisieren.
Mit der Docker-Version der Nginx-Einheit war es ein wenig schwierig, eine Flasche zu machen
Erstellen Sie mit Streamlit schnell ein Python-Datenanalyse-Dashboard und stellen Sie es in AWS bereit
Bildverarbeitung mit Python (ich habe versucht, es in 0 und 1 Mosaikkunst zu binarisieren)
Ich wollte nur die Daten des gewünschten Datums und der gewünschten Uhrzeit mit Django extrahieren
So zählen Sie die Anzahl der Vorkommen jedes Elements in der Liste in Python mit der Gewichtung
Ich habe versucht, die Verarbeitungsgeschwindigkeit mit dplyr von R und pandas von Python zu vergleichen
Es ist einfach, SQL mit Python auszuführen und das Ergebnis in Excel auszugeben
Versuchen Sie, COVID-19 Tokyo-Daten mit Python zu kratzen
Ich habe versucht, das Bild mit Python + OpenCV "gammakorrektur" zu machen
[Wartung der Python-Umgebung] De-NeoBundle. Bereiten Sie die Umgebung des super praktischen Komplementärsteckers jedi-vim mit dein vor und stellen Sie ihn so ein, dass er bequem ist
So zeichnen Sie interaktiv eine Pipeline für maschinelles Lernen mit scikit-learn und speichern sie in HTML
Anwendung von Python: Datenbereinigung Teil 3: Verwendung von OpenCV und Vorverarbeitung von Bilddaten
Rufen Sie die Excel-Liste rekursiv in einem bestimmten Ordner mit Python ab und schreiben Sie sie in Excel.
Befreien Sie sich mit Python und regulären Ausdrücken von schmutzigen Daten
Löse das Spiralbuch (Algorithmus und Datenstruktur) mit Python!
Die Geschichte eines Rubinisten, der mit Python :: Dict-Daten mit Pycall kämpft
[Homologie] Zählen Sie mit Python die Anzahl der Löcher in den Daten
Erstellen Sie eine Python-Umgebung und übertragen Sie Daten auf den Server
Versuchen Sie, den Betrieb von Netzwerkgeräten mit Python zu automatisieren
[Lass uns mit Python spielen] Bildverarbeitung zu Monochrom und Punkten
[Python / Ruby] Mit Code verstehen Wie man Daten aus dem Internet abruft und in CSV schreibt
Ich habe eine Funktion zum Trimmen des Bildes von Python openCV erstellt. Verwenden Sie sie daher bitte.
[Einführung in Data Scientists] Grundlagen von Python ♬ Funktionen und Klassen
Der Prozess, Python-Code objektorientiert zu machen und zu verbessern
Ich möchte die Natur von Python und Pip kennenlernen
Ich möchte mit Python nur das Gesicht aus einem Personenbild ausschneiden und speichern ~ Gesichtserkennung und Zuschneiden mit face_recognition ~
Holen Sie sich zusätzliche Daten zu LDAP mit Python (Writer und Reader)
Spielen Sie mit dem Passwortmechanismus von GitHub Webhook und Python