[PYTHON] Cloud-Funktionen zum Ändern der Bildgröße mithilfe von OpenCV mit Cloud Storage-Trigger

Dies ist ein Beispiel mit Python, wenn Sie eine Miniaturansicht eines hochgeladenen Bildes mithilfe eines Cloud-Speicherauslösers in den Cloud-Funktionen von GCP erstellen möchten.

requirements.txt


google-cloud-storage==1.28.1
opencv-python==4.2.0.32
# -*- coding: utf-8 -*-
import tempfile
import os
import cv2
from google.cloud import storage


NEW_FILE_PREFIX="thumbnail_"
client = storage.Client()


def main(event, context):
    """Triggered by a change to a Cloud Storage bucket.
    Args:
         event (dict): Event payload.
         context (google.cloud.functions.Context): Metadata for the event.
    """
    name = event['name']
    bucket = event['bucket']

    _, _name = os.path.split(name)
    if _name.startswith(NEW_FILE_PREFIX):
        print(f"Blob {name} is already resized.")
        return

    file_name = download(bucket, name)
    resize(file_name)
    upload(bucket, name, file_name)

    os.remove(file_name)


def download(bucket, blob_name):
    blob = client.bucket(bucket).blob(blob_name)
    _, _ext = os.path.splitext(blob.name)
    _, temp_local_filename = tempfile.mkstemp(suffix=_ext)
    blob.download_to_filename(temp_local_filename)
    print(f"Blob {blob_name} downloaded to {temp_local_filename}.")
    return temp_local_filename


def upload(bucket, blob_name, file_name):
    _dir, _name = os.path.split(blob_name)
    new_file_name = os.path.join(_dir, NEW_FILE_PREFIX + _name)
    new_blob = client.bucket(bucket).blob(new_file_name)
    new_blob.upload_from_filename(file_name)
    print(f'New image uploaded to: gs://{bucket}/{new_file_name}')


def resize(file_name):
    img = cv2.imread(file_name)
    height = img.shape[0]
    width = img.shape[1]
    print(f"Old blob width {width}, height {height}")

    dst = cv2.resize(img, (int(width/2), int(height/2)))
    cv2.imwrite(file_name, dst) # requierd ext
    print(f"New blob width {dst.shape[0]}, height {dst.shape[1]}")
    return file_name

Referenziert

Recommended Posts

Cloud-Funktionen zum Ändern der Bildgröße mithilfe von OpenCV mit Cloud Storage-Trigger
Versuchen Sie, Python mit Google Cloud-Funktionen zu verwenden
Konvertieren Sie eine Tabelle in CSV und laden Sie sie mit Cloud-Funktionen in den Cloud-Speicher hoch
Laden Sie Bilder mit tkinter mit GUI auf S3 hoch
Versuchen Sie, die Bildkonvertierung mit OpenCV mit Python zu projizieren
So laden Sie keine Bilder, wenn Sie PhantomJS mit Selen verwenden
[Python] Verwenden von OpenCV mit Python (Basic)
Hochladen von Dateien in den Cloud-Speicher mit dem Python-SDK von Firebase
Verwenden von OpenCV mit Python @Mac
So laden Sie Dateien mit Python in den Cloud-Speicher hoch [Erstellen Sie mit Raspberry PI # 1 eine Festkommakamera]
Laden Sie Dateien mit SDK (Python-Version) auf Aspera hoch, das mit IBM Cloud Object Storage (ICOS) geliefert wird.
Änderungen an "Ausführen von Cloud Dataflow + Cloud Pub / Sub + Fluentd ..." mit SDK 2.1
Ich möchte eine externe Bibliothek mit IBM Cloud-Funktionen verwenden
Herstellen einer Verbindung zum Cloud Firestore über Google Cloud-Funktionen mit Python-Code
Objektextraktion im Bild durch Mustervergleich mit OpenCV mit Python
Laden Sie Dateien in den Cloud Storage (GCS) von GCP hoch. ~ Laden Sie mit lokalem Python
Der schnellste Weg, um regelmäßig Kamerabilder mit Pythons OpenCV zu erhalten
[Python] Versuchen Sie, Zeichen aus Bildern mit OpenCV und pyocr zu erkennen
[Python] Verwenden von OpenCV mit Python (Bildtransformation)
[Python] Verwenden von OpenCV mit Python (Kantenerkennung)
Verwenden von Cloud-Speicher aus Python3 (Einführung)
Laden Sie das GIF-Bild mit Python + OpenCV
Konvertieren Sie Dateien, die mit Cloud-Funktionen (Python) in den Cloud-Speicher hochgeladen wurden, so, dass sie in Excel nicht verstümmelt werden
[memo] Senden Sie Tabelleninformationen mit BigQuery Schedule und Cloud-Funktionen an GCS
Erhalten Sie Tweets mit der Google Cloud-Funktion und speichern Sie Bilder automatisch in Google Fotos
Mit ReportingAPI + Cloud-Funktionen können Sie die Anzahl der Besuche auf jeder Seite ermitteln
[Rails] Erkennen radikaler Bilder durch Analysieren von Bildern mithilfe der Cloud Vision API
Kopieren Sie Daten von Amazon S3 mit Python (boto) in Google Cloud Storage.
So suchen Sie mit Pythons Astroquery und erhalten passende Bilder mit Skyview
Regelmäßiger Export von Google Analytics-Rohdaten nach BigQuery mithilfe von Cloud-Funktionen
Ich möchte Objekte mit OpenCV erkennen
Lernen Sie mit Chainer, monochrome Bilder einzufärben
Versuchen Sie, die Kamera mit Pythons OpenCV zu verwenden
Bilder mit Pupil, Python und OpenCV aufnehmen
Stellen Sie Funktionen mit Cloud Pak for Data bereit
[GCP] Betreiben Sie Google Cloud Storage mit Python
Fügen Sie mit Pythonista Bilder zu iOS-Fotos hinzu
[python, openCV] base64 Gesichtserkennung in Bildern
[Python] Bilder mit OpenCV lesen (für Anfänger)
Fügen Sie Bildern mit Python2.7 Gaußsches Rauschen hinzu
Laden Sie Bilder mit Python auf Google Drive hoch
So zeichnen Sie ein OpenCV-Bild mit Pygame
Konvertieren der cURL-API in ein Python-Skript (mithilfe des IBM Cloud-Objektspeichers)