App Engine ermöglicht Ihnen, Bilddaten mit einem dedizierten Bilderdienst zu bearbeiten. Neben der Bildbearbeitung können Sie mit dem Bilderdienst mehrere Bilder zu einem einzigen Bild zusammenfassen, Bildformate konvertieren, Bildmetadaten wie Format, Breite und Höhe angeben sowie ein Histogramm von Farbwerten anzeigen.
Der Bilderdienst kann Bilddaten direkt von der Anwendung annehmen oder einen Cloud Storage-Wert verwenden. Obwohl der Bilderdienst auch einen Cloud Blobstore-Wert verwenden kann, empfehlen wir die Nutzung von Cloud Storage.
Bilder, die in Cloud Storage und Cloud Blobstore gespeichert werden, können so groß wie der maximal zulässige Wert für den jeweiligen Dienst sein. Das bearbeitete Bild wird direkt an die Anwendung zurückgegeben und muss kleiner als 32 Megabyte sein.
Cloud Storage-Buckets müssen detaillierte Access Control Lists verwenden, damit die Images API funktioniert. Bei Buckets, die für den einheitlichen Zugriff auf Bucket-Ebene konfiguriert wurden, kann die Images API keine Images in diesem Bucket abrufen und gibt die Fehlermeldung TransformationError
aus.
Wenn Ihr Bucket auf diese Weise konfiguriert ist, können Sie den einheitlichen Zugriff auf Bucket-Ebene deaktivieren.
Image Service API
Verfügbare Bildtransformationen
Mit dem Bilderdienst können Sie die Bildgröße ändern, Bilder drehen, spiegeln und zuschneiden und die Bildqualität verbessern. Außerdem können mehrere Bilder in einem einzelnen Bild zusammengefasst werden.
Größe ändern
Sie können die Größe des Bildes ändern und dabei das Seitenverhältnis beibehalten. Weder die Breite noch die Höhe des skalierten Bildes darf 4.000 Pixel überschreiten.
Drehen
Sie können das Bild in 90-Grad-Schritten drehen.
Horizontal spiegeln
Sie können das Bild horizontal spiegeln.
Vertikal spiegeln
Sie können das Bild vertikal spiegeln.
Zuschneiden
Sie können das Bild mit einem vorgegebenen Begrenzungsrahmen zuschneiden.
Auf gut Glück!
Die Transformation "Auf gut Glück!" verbessert dunkle und helle Farben in einem Bild und passt beide an. Außerdem optimiert sie den Kontrast.
Bildformate
Der Dienst akzeptiert Bilddaten in den Formaten JPEG, PNG, WEBP, GIF (einschließlich animierter GIFs), BMP, TIFF und ICO. Transformierte Bilder können in den Formaten JPEG, WEBP und PNG zurückgegeben werden.
Wenn die Ein- und Ausgabeformate unterschiedlich sind, konvertiert der Dienst die Eingabedaten vor der Transformation in das Ausgabeformat.
Bilder transformieren
Der Bilderdienst kann einen Wert aus Google Cloud Storage oder Blobstore als Bildquelle für eine Transformation verwenden. Zur Transformation von Bildern haben Sie zwei Möglichkeiten:
- Mithilfe der Klasse
Image()
können Sie einfache Bildtransformationen wie zuschneiden, spiegeln und drehen ausführen. - Mithilfe von get_serving_url() können Sie Bilder dynamisch skalieren und zuschneiden, sodass Sie keine unterschiedlichen Bildgrößen auf dem Server speichern müssen. Diese Methode gibt eine URL zurück, unter der das Bild bereitgestellt wird, und Umwandlungen am Bild sind in dieser URL codiert. Die Funktion geht davon aus, dass sich das Bild nicht ändert. Wenn es nach dem Abrufen der URL geändert wird, erhalten Sie möglicherweise unerwartete Ergebnisse bei Verwendung der URL.
Verwenden der
Image()
-Klasse
Sie können Bilder aus Cloud Storage oder Blobstore transformieren, solange die Bildgröße kleiner als die in Cloud Storage oder Blobstore maximal zulässige Größe ist. Das Ergebnis der Transformation wird direkt an die Anwendung zurückgegeben und darf das API-Antwortlimit von 32 Megabyte nicht überschreiten.
Zum Transformieren eines Bildes aus Cloud Storage oder Blobstore Sie legen das Argument image_data
des Image-Konstruktors mit den Bilddaten fest und setzen das Argument blob_key
auf den Blobstore-Schlüssel, dessen Wert das Bild ist. Der Rest der API verhält sich wie erwartet.
Die execute_transforms()
-Methode gibt das Ergebnis der Transformationen zurück oder löst einen LargeImageError
aus, wenn das Ergebnis größer als die maximale Größe von 32 Megabyte ist.
Verwendung von
get_serving_url()
Mit der Methode get_serving_url() können Sie eine feste, dedizierte URL für ein Bild generieren, das in Cloud Storage oder Blobstore gespeichert ist.
Die generierte URL verwendet eine hoch optimierte Infrastruktur zur Bereitstellung von Bildern, die von Ihrer Anwendung getrennt ist. Da das Bild unabhängig von Ihrer Anwendung bereitgestellt wird, entsteht keine Last, was sehr kosteneffektiv sein kann. Die durch diese Methode zurückgegebene URL ist immer öffentlich zugänglich, kann aber nicht erraten werden.
Wenn Sie die URL nicht mehr bereitstellen möchten, löschen Sie sie mit der Methode
delete_serving_url()
-Funktion.
Die Methode gibt eine URL zurück, die mit der angegebenen Größe und den Zuschneideargumenten codiert ist. Wenn Sie keine Argumente angeben, gibt die Methode die Standard-URL für das Bild zurück, zum Beispiel:
http://lhx.ggpht.com/randomStringImageId
Sie können das Bild dynamisch skalieren und zuschneiden, wenn Sie die Argumente in der URL angeben. Folgende Argumente sind verfügbar:
=sxx
, wobeixx
eine Ganzzahl von 0 bis 2.560 ist, die die Länge der längsten Seite des Bildes in Pixel angibt. Wenn Sie beispielsweise=s32
hinzufügen, wird die Größe des Bildes so geändert, dass die längste Dimension 32 Pixel beträgt.=sxx-c
, wobei xx eine Ganzzahl von 0 bis 2.560 ist, die die Größe des zugeschnittenen Bildes in Pixel angibt. Mit-c
wird das System angewiesen, das Bild zuzuschneiden.
# Resize the image to 32 pixels (aspect-ratio preserved) http://lhx.ggpht.com/randomStringImageId=s32 # Crop the image to 32 pixels http://lhx.ggpht.com/randomStringImageId=s32-c
Bilder und der Entwicklungsserver
Der Entwicklungsserver verwendet zur Ausführung der Bilderdienstfunktionen Ihren lokalen Rechner.
Sie können Pillow oder eine Python-Schnittstelle für ImageMagick verwenden, um die Größe von Bildern zu ändern, Bilder zu konvertieren oder zu bearbeiten.
Hinweis zum Löschen
Wenn Sie die Bereitstellung eines in Cloud Storage oder Blobstore gespeicherten Bildes beenden möchten, rufen Sie die Methode
delete_serving_url()
-Funktion.
Sie sollten vermeiden, Images in Cloud Storage oder Blobstore direkt zu löschen, da sie dann möglicherweise nicht mehr über die Bereitstellungs-URL zugänglich sind.
Bereitstellungs-URLs funktionieren nicht mehr, wenn die Anwendung, mit der sie erstellt wurden, deaktiviert oder gelöscht ist, selbst wenn das zugrunde liegende Bild weiterhin verfügbar ist.
Kontingente, Limits und Preise
Bei Verwendung der Images API fallen derzeit keine zusätzlichen Kosten an. Weitere Informationen finden Sie auf der Seite zu App Engine-Preisen.
Jede Images API-Anfrage wird auf das Kontingent der API-Aufrufe zur Bildbearbeitung angerechnet. Eine Anwendung kann mehrere Transformationen für ein Bild in einem einzigen API-Aufruf ausführen.
An den Bilderdienst gesendete Daten werden auf das Kontingent des zur (Images) API gesendeten Datenvolumens angerechnet. Vom Bilderdienst empfangene Daten werden dem Kontingent des von der (Images) API empfangenen Datenvolumens zugeschrieben.
Jede Transformation eines Bildes wird auf das Kontingent für ausgeführte Transformationen angerechnet.
Weitere Informationen finden Sie unter Kontingente. Sie können die aktuelle Kontingentnutzung Ihrer Anwendung auf dem Tab Kontingentdetails der Google Cloud Console einsehen.
Neben Kontingenten gelten für die Verwendung des Bilderdienstes folgende Limits:
Limit | Menge |
---|---|
Maximale Datengröße des an den Dienst gesendeten Bildes | 32 MB |
Maximale Datengröße des vom Dienst empfangenen Bildes | 32 MB |
Maximale Größe des vom Dienst gesendeten oder empfangenen Bildes | 50 Megapixel |