[PYTHON] Cloud Functions pour redimensionner les images à l'aide d'OpenCV avec le déclencheur Cloud Storage

Il s'agit d'un exemple utilisant python lorsque vous souhaitez créer une miniature d'une image importée à l'aide d'un déclencheur de stockage cloud dans les fonctions cloud de GCP.

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

Référencé

Recommended Posts

Cloud Functions pour redimensionner les images à l'aide d'OpenCV avec le déclencheur Cloud Storage
Essayez d'utiliser Python avec Google Cloud Functions
Convertissez la feuille de calcul en CSV et importez-la dans Cloud Storage avec Cloud Functions
Télécharger des images sur S3 avec une interface graphique à l'aide de tkinter
Essayez de projeter la conversion d'image en utilisant OpenCV avec Python
Comment ne pas charger d'images lors de l'utilisation de PhantomJS avec Selenium
[Python] Utilisation d'OpenCV avec Python (basique)
Comment télécharger des fichiers sur Cloud Storage avec le SDK Python de Firebase
Utiliser OpenCV avec Python @Mac
Comment télécharger des fichiers sur Cloud Storage à l'aide de Python [Créer une caméra à point fixe avec Raspberry PI # 1]
Télécharger des fichiers sur Aspera fournis avec IBM Cloud Object Storage (ICOS) à l'aide du SDK (version Python)
Modifications pour exécuter "Utilisation de Cloud Dataflow + Cloud Pub / Sub + Fluentd ..." avec le SDK 2.1
Je souhaite utiliser une bibliothèque externe avec IBM Cloud Functions
Comment se connecter à Cloud Firestore à partir de Google Cloud Functions avec du code Python
Extraction d'objets dans l'image par correspondance de modèles en utilisant OpenCV avec Python
Télécharger le fichier sur Cloud Storage (GCS) de GCP ~ Charger avec Python local
Le moyen le plus rapide d'obtenir régulièrement des images de caméra avec opencv de python
[Python] Essayez de reconnaître les caractères des images avec OpenCV et pyocr
[Python] Utilisation d'OpenCV avec Python (transformation d'image)
[Python] Utilisation d'OpenCV avec Python (détection des bords)
Utiliser Cloud Storage depuis Python3 (Introduction)
Charger une image gif avec Python + OpenCV
Convertissez les fichiers téléchargés vers Cloud Storage avec Cloud Functions (Python) afin qu'ils ne soient pas déformés dans Excel
[mémo] Envoyez des informations de table à GCS avec BigQuery Schedule et Cloud Functions
Recevez des tweets avec la fonction Google Cloud et enregistrez automatiquement les images dans Google Photos
Obtenez le nombre de visites sur chaque page avec ReportingAPI + Cloud Functions
[Rails] Comment détecter des images radicales en analysant des images à l'aide de l'API Cloud Vision
Copier des données d'Amazon S3 vers Google Cloud Storage avec Python (boto)
Comment rechercher à l'aide de l'Astroquery de Python et obtenir des images ajustées avec Skyview
Exportation régulière des données brutes Google Analytics vers BigQuery à l'aide des fonctions cloud
Je veux détecter des objets avec OpenCV
Apprenez à coloriser les images monochromes avec Chainer
Essayez d'utiliser l'appareil photo avec OpenCV de Python
Capturer des images avec Pupil, python et OpenCV
Déployez des fonctions avec Cloud Pak for Data
[GCP] Exploitez Google Cloud Storage avec Python
Ajouter des images à des photos iOS avec Pythonista
[python, openCV] base64 Reconnaissance faciale dans les images
[Python] Lire des images avec OpenCV (pour les débutants)
Ajouter du bruit gaussien aux images avec python2.7
Télécharger des images sur Google Drive avec Python
Comment dessiner une image OpenCV avec Pygame
Convertir l'API cURL en script Python (à l'aide du stockage d'objets IBM Cloud)