App Engine offre la possibilità di manipolare i dati delle immagini utilizzando un servizio Immagini dedicato. Il servizio Immagini può manipolare le immagini, comporre più immagini in un'unica immagine, convertirne i formati, fornire metadati delle immagini come come formato, larghezza, altezza e un istogramma di valori di colore.
Java 8 su App Engine supporta le classi di manipolazione delle immagini native di Java, come AWT e Java2D, insieme all'API App Engine Images.
Il servizio Immagini può accettare dati immagine direttamente dall'app oppure può utilizzare un Valore di Cloud Storage. Il servizio Immagini può utilizzare anche un valore Cloud Blobstore, ma consigliamo di utilizzare 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 le dimensioni devono essere inferiori a 32 MB.
Affinché l'API Images funzioni, i bucket Cloud Storage devono utilizzare elenchi di controllo dell'accesso granulari. Per i bucket configurati per l'accesso uniforme a livello di bucket, l'API Images non potrà recuperare le immagini al loro interno e verrà visualizzato il messaggio di errore TransformationError
. Se il bucket è configurato in questo modo, puoi disabilitare l'accesso uniforme a livello di bucket.
Trasformazione delle immagini in Java 8
L'API Image Service ti consente di applicare trasformazioni alle immagini utilizzando un servizio invece di eseguire l'elaborazione delle immagini sul server dell'applicazione. L'app
prepara un oggetto Image
con i dati immagine da trasformare e un Transform
con istruzioni su come trasformare l'immagine. L'app riceve un oggetto ImagesService
, quindi chiama il relativo metodo applyTransform()
con gli oggetti Image
e Transform
. Il metodo restituisce un oggetto Image
dell'immagine trasformata.
L'app recupera le istanze ImagesService
, Image
e Transform
utilizzando
ImagesServiceFactory
.
È possibile combinare più trasformazioni in un'unica azione utilizzando un'istanza CompositeTransform
. Guarda l'API Images
riferimento.
Trasformazioni delle immagini disponibili
Il servizio Immagini può ridimensionare, ruotare, capovolgere e ritagliare le immagini e migliorare fotografie. Può anche comporre più immagini in una singola immagine.
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 in orizzontale.
Capovolgi verticalmente
Puoi capovolgere l'immagine verticalmente.
Ritaglia
Puoi ritagliare l'immagine con un determinato riquadro di delimitazione.
Mi sento fortunato
Il brano "Mi sento fortunato" Transform consente di migliorare i colori scuri e chiari di un'immagine e consente di regolare il colore e ottimizzare il contrasto.
Formati dell'immagine
Il servizio accetta dati delle immagini nei formati JPEG, PNG, WEBP, GIF (incluse le GIF animate), BMP, TIFF e ICO. Le immagini trasformate possono essere restituite nei formati JPEG, WEBP e PNG.
Se il formato di input e quello di output sono diversi, il servizio converte i dati di input nel formato di output prima di eseguire la trasformazione.
Trasformazione delle immagini
Il servizio Immagini può utilizzare un valore di Google Cloud Storage o Blobstore come origine dell'immagine per una trasformazione. Esistono due modi per trasformare le immagini:
- L'utilizzo della classe ImagesServiceFactory() ti consente di eseguire semplici trasformazioni delle immagini, come ritaglio, capovolgimento e rotazione.
- L'utilizzo di getServingUrl() ti consente di ridimensionare e ritagliare in modo dinamico le immagini, senza dover archiviare immagini di dimensioni diverse sul server. Questo metodo restituisce un URL che pubblica l'immagine e le trasformazioni all'immagine sono codificate in questo URL. Questa funzione presuppone che l'immagine non cambi; se viene modificato dopo ottenere l'URL, potresti ottenere risultati imprevisti in seguito all'utilizzo dell'URL.
Utilizzo della classe ImagesServiceFactory()
Puoi trasformare le immagini da Cloud Storage o Blobstore se sia inferiore a quella massima consentita 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 in Java 8, crea l'oggetto Image
chiamando il metodo statico ImagesServiceFactory.makeImageFromBlob()
e passando un valore blobstore.BlobKey
. Il resto dell'API si comporta come previsto. Il metodo applyTransform()
restituisce il risultato delle trasformazioni o genera un ImagesServiceFailureException
se il risultato è superiore alla dimensione massima di 32 MB.
Utilizzo di getServingUrl()
La getServingUrl() consente di generare un URL fisso e dedicato per un'immagine archiviata in Cloud Storage o nell'archivio BLOB. Ad esempio:
L'URL generato utilizza un'infrastruttura di pubblicazione di immagini altamente ottimizzata, ovvero separate dalla tua applicazione. Poiché l'immagine viene pubblicata in modo indipendente non genera carico e può essere molto conveniente. URL restituiti da questo metodo sono sempre accessibili pubblicamente ma non indovinabili.
Se vuoi interrompere la pubblicazione dell'URL, eliminalo utilizzando il metodo deleteServingUrl().
Il metodo restituisce un URL codificato con gli argomenti size e crop specificati. Se non specifichi argomenti, il metodo restituisce l'URL predefinito per immagine, ad esempio:
http://lhx.ggpht.com/randomStringImageId
Puoi ridimensionare e ritagliare l'immagine in modo dinamico specificando gli argomenti nella sezione URL. Gli argomenti disponibili sono:
=sxx
, dovexx
è un numero intero compreso tra 0 e 2560 che rappresenta la lunghezza, in pixel, del lato più lungo dell'immagine. Ad esempio, l'aggiunta di=s32
ridimensiona immagine quindi la sua dimensione più lunga è di 32 pixel.=sxx-c
dove xx è un numero intero compreso tra 0 e 2560 che rappresenta il valore ritagliato dimensione immagine 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 il tuo computer locale per eseguire le funzionalità il servizio Images.
Il server di sviluppo Java utilizza la classe ImageIO
.
per simulare il servizio Image. La funzionalità di miglioramento delle foto "Mi sento fortunato"
non è supportata. Il formato immagine WEBP è supportato solo se è stato installato un plug-in di decodificatore adatto. Il VP8 di Java
decoder,
ad esempio. Tieni presente che il metodo getServingUrl
non è disponibile in
di sviluppo software.
Una nota sull'eliminazione
Per interrompere la gestione di un'immagine archiviata in una chiamata Cloud Storage o Blobstore il deleteServingUrl() .
Dovresti evitare di eliminare direttamente le immagini in Cloud Storage o Blobstore come quindi puoi lasciarle 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 sono previsti costi aggiuntivi per l'utilizzo dell'API Images. Consulta la pagina dei prezzi di App Engine.
Ogni richiesta all'API Images viene conteggiata ai fini delle chiamate all'API Image Manipulation quota. Un'app può eseguire più trasformazioni di un'immagine in una singola API chiamata.
I dati inviati al servizio Immagini vengono conteggiati ai fini della quota Dati inviati all'API (Images). I dati ricevuti dal servizio Immagini vengono conteggiati ai fini della quota Dati ricevuti dall'API (Images).
Ogni trasformazione di un'immagine viene conteggiata ai fini della quota Trasformazioni eseguite.
Per ulteriori informazioni, consulta Quote. Puoi vedere utilizzo attuale della quota dell'app visitando la quota della console Google Cloud Dettagli.
Oltre alle quote, all'utilizzo del servizio Immagini 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 |