API Images per servizi in bundle legacy

App Engine consente di manipolare i dati delle immagini utilizzando un servizio Images dedicato. Il servizio Images può manipolare le immagini, combinarne più in una singola immagine, convertire i formati delle immagini, fornire metadati delle immagini come formato, larghezza, altezza e un istogramma dei valori di colore.

Il servizio Immagini può accettare i dati delle immagini direttamente dall'app oppure può utilizzare un valore di Cloud Storage. Il servizio Images può utilizzare anche un valore Cloud Blobstore, ma consigliamo l'utilizzo di Cloud Storage.

Le immagini archiviate in Cloud Storage e Cloud Blobstore possono raggiungere il valore massimo consentito per il rispettivo servizio. L'immagine trasformata viene restituita direttamente all'app e deve avere dimensioni inferiori a 32 megabyte.

Per funzionare, i bucket Cloud Storage devono utilizzare elenchi di controllo dell'accesso granulari per l'API Images. Per i bucket configurati per l'accesso uniforme a livello di bucket, l'API Images non sarà in grado di recuperare le immagini in quel bucket e restituirà il messaggio di errore TransformationError. Se il bucket è configurato in questo modo, puoi disattivare l'accesso uniforme a livello di bucket.

Quando fornisci immagini da Cloud Storage, l'API Images utilizza un service account gestito da Google, dynamic_image_service@system.gserviceaccount.com, per recuperare l'immagine. Questa operazione viene eseguita normalmente per te, ma se questo service account non dispone del ruolo Storage Object Viewer nel bucket, potresti riscontrare errori 403 Forbidden intermittenti. Ciò si verifica quando l'immagine non è disponibile nella cache di pubblicazione di Google e deve essere recuperata dal bucket di origine.

Per concedere l'autorizzazione richiesta, esegui questo comando gcloud:

gcloud storage buckets add-iam-policy-binding gs://[BUCKET_NAME] \
  --member=serviceAccount:dynamic_image_service@system.gserviceaccount.com \
  --role=roles/storage.objectViewer

API Image Service

Trasformazioni delle immagini disponibili

Il servizio Immagini può ridimensionare, ruotare, capovolgere e ritagliare le immagini, nonché migliorare le fotografie. Può anche comporre più immagini in una sola.

Ridimensiona

Puoi ridimensionare l'immagine mantenendo le stesse proporzioni. Né la larghezza né l'altezza dell'immagine ridimensionata possono superare i 4000 pixel.

Ruota

Puoi ruotare l'immagine con incrementi di 90 gradi.

Capovolgi orizzontalmente

Puoi capovolgere l'immagine orizzontalmente.

Capovolgi verticalmente

Puoi capovolgere l'immagine in verticale.

Ritaglia

Puoi ritagliare l'immagine con un determinato riquadro di delimitazione.

Mi sento fortunato

La trasformazione "Mi sento fortunato" migliora i colori scuri e chiari di un'immagine e regola sia il colore che il contrasto.

Formati immagine

Il servizio accetta dati immagine nei formati JPEG, PNG, WEBP, GIF (inclusi GIF animate), BMP, TIFF e ICO. Le immagini trasformate possono essere restituite nei formati JPEG, WEBP e PNG.

Se il formato di input e il formato di output sono diversi, il servizio converte i dati di input nel formato di output prima di eseguire la trasformazione.

Trasformare le immagini

Il servizio Images può utilizzare un valore di Cloud Storage o Blobstore come origine dell'immagine per una trasformazione. Esistono due modi per trasformare le immagini:

  1. L'utilizzo della classe Image() consente di eseguire semplici trasformazioni delle immagini, come ritaglio, capovolgimento e rotazione.
  2. L'utilizzo di get_serving_url() ti consente di ridimensionare e ritagliare dinamicamente le immagini, in modo da non dover memorizzare diverse dimensioni delle immagini sul server. Questo metodo restituisce un URL che pubblica l'immagine e le trasformazioni dell'immagine sono codificate in questo URL. Questa funzione presuppone che l'immagine non cambi. Se viene modificata dopo aver ottenuto l'URL, potresti ottenere risultati imprevisti dall'utilizzo dell'URL.

Utilizzo della classe Image()

Puoi trasformare le immagini da Cloud Storage o Blobstore se le dimensioni dell'immagine sono inferiori al massimo consentito da Cloud Storage o Blobstore. Tieni presente che il risultato della trasformazione viene restituito direttamente all'app e non deve superare il limite di risposta dell'API di 32 megabyte.

Per trasformare un'immagine da Cloud Storage o Blobstore, anziché impostare l'argomento image_data del costruttore Image con i dati dell'immagine, imposta l'argomento blob_key sulla chiave Blobstore il cui valore è l'immagine. Il resto dell'API si comporta come previsto. Il metodo execute_transforms() restituisce il risultato delle trasformazioni o genera un LargeImageError se il risultato è maggiore della dimensione massima di 32 megabyte.

Utilizzo di get_serving_url()

Il metodo get_serving_url() consente di generare un URL fisso e dedicato per un'immagine archiviata in Cloud Storage o Blobstore.

L'URL generato utilizza un'infrastruttura di pubblicazione delle immagini altamente ottimizzata, separata dalla tua applicazione. Poiché l'immagine viene pubblicata indipendentemente dalla tua app, non genera carico e può essere molto conveniente. L'URL restituito da questo metodo è sempre accessibile pubblicamente, ma non è intuibile.

Se vuoi interrompere la pubblicazione dell'URL, eliminalo utilizzando il metodo Funzione delete_serving_url().

Il metodo restituisce un URL codificato con gli argomenti specificati per le dimensioni e il ritaglio. Se non specifichi alcun argomento, il metodo restituisce l'URL predefinito per l'immagine, ad esempio:

http://lhx.ggpht.com/randomStringImageId

Puoi ridimensionare e ritagliare l'immagine in modo dinamico specificando gli argomenti nell'URL. Gli argomenti disponibili sono:

  • =sxx, dove xx è un numero intero compreso tra 0 e 2560 che rappresenta la lunghezza, in pixel, del lato più lungo dell'immagine. Ad esempio, se aggiungi =s32, l'immagine viene ridimensionata in modo che la dimensione più lunga sia di 32 pixel.
  • =sxx-c, dove xx è un numero intero compreso tra 0 e 2560 che rappresenta le dimensioni dell'immagine ritagliata in pixel e -c indica al sistema di ritagliare l'immagine.
# 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

Immagini e server di sviluppo

Il server di sviluppo utilizza la tua macchina locale per eseguire le funzionalità del servizio Images.

Puoi utilizzare Pillow o un'interfaccia Python per ImageMagick per ridimensionare, convertire e manipolare le immagini.

Una nota sull'eliminazione

Per interrompere la pubblicazione di un'immagine archiviata in Cloud Storage o Blobstore, chiama il metodo Funzione delete_serving_url().

Ti consigliamo di evitare di eliminare direttamente le immagini in Cloud Storage o Blobstore, in quanto in questo modo potrebbero rimanere accessibili tramite l'URL di pubblicazione.

Gli URL di pubblicazione smetteranno di funzionare se l'applicazione che li ha creati viene disattivata o eliminata, anche se l'immagine sottostante rimane disponibile.

Quote, limiti e prezzi

Al momento non è previsto alcun costo aggiuntivo per l'utilizzo dell'API Images. Consulta la pagina dei prezzi di App Engine.

Ogni richiesta dell'API Images viene conteggiata ai fini della quota Chiamate API di manipolazione delle immagini. Un'app può eseguire più trasformazioni di un'immagine in una singola chiamata API.

I dati inviati al servizio Immagini vengono conteggiati ai fini della quota dell'API Data Sent to (Images). I dati ricevuti dal servizio Immagini vengono conteggiati ai fini della quota Dati ricevuti dall'API (Immagini).

Ogni trasformazione di un'immagine viene conteggiata ai fini della quota Trasformazioni eseguite.

Per scoprire di più, consulta Quote. Puoi visualizzare l'utilizzo attuale della quota della tua app visitando la scheda Dettagli quote della consoleGoogle Cloud .

Oltre alle quote, all'utilizzo del servizio Images si applicano i seguenti limiti:

Limite Importo
dimensione massima dei dati dell'immagine inviata al servizio 32 megabyte
dimensione massima dei dati dell'immagine ricevuta dal servizio 32 megabyte
Dimensione massima dell'immagine inviata o ricevuta dal servizio 50 megapixel