2017-10-03 1 views
0

Ich erstelle eine Anwendung in Google App Engine. Wir behalten alle Bilder in Google Cloud Storage. Diese App dient Fotos mit der Verwendung von get_serving_url Methode. Die Anwendung führt Größenmanipulationen durch, indem sie die Serving-URL ändert. An diesem Punkt müssen wir Bildbreite und -höhe erhalten.Wie kann ich Werte für die Breite und Höhe des Bildes abrufen, ohne alle Daten in Google App Engine abzurufen?

Ich kann es auf diese Weise tun:

blob_key = blobstore.create_gs_key(_gspath) 
data = blobstore.fetch_data(blob_key, 0, 50000) 
raw_image = images.Image(image_data=data) 

Danach tun, kann ich Breiten- und Höhenwerte über raw_image Variable erhalten. Aber ich denke, dass dieser Weg nicht gut ist. Ich möchte nicht alle Daten abrufen, da einige Bilder zu groß sind. Wie kann ich diese Informationen erhalten, ohne Daten zu laden?

+0

Sammeln Sie diese Informationen, wenn die Bilder als Metadaten über das Bild gespeichert werden. Dann können Sie Abfragen/Rückgabedaten ausführen, ohne auf den Blob zuzugreifen. –

+0

Ich versuche auf diese Weise. Ich werde Feedback über das Ergebnis geben. –

Antwort

0

Google App Engine bietet keine integrierte Möglichkeit zum Abrufen von Dimensionen eines Bildes, ohne es in den Arbeitsspeicher zu laden. Es gibt einige Alternativen könnten Sie verwenden:

  1. Sie könnten einen Dienst erstellen, die auf GCE ausgeführt wird, um ein Bild von GCS holen wird, und gibt die Größe. Ihre GAE App könnte dies dann anrufen. Dies verschiebt die Speicheranforderung zu GCE, die viel besser damit umgehen kann.

  2. Wenn Sie nur PNG-, GIF-, BMP- und ICO-Formate (nicht JPEG oder TIFF) verwenden, können Sie nur die ersten 26 Bytes des Bildes abrufen und als image_data übergeben. Das ist genug, damit die Klasse Images Breite und Höhe erhalten kann.

  3. Wenn Sie den Upload-Vorgang steuern, können Sie die Breite und Höhe als Metadaten in GCS speichern. Dann müssen Sie das GCS-Objekt nicht abrufen, sondern nur seine Metadaten, um die Dimensionen zu erhalten.

Verwandte Themen