app engine offre la possibilità di manipolare i dati dell’immagine tramite un servizio di immagine dedicato. Il servizio immagine può manipolare immagini, unire diverse immagini in uno, convertire i formati di immagine, fornire ai metadati dell’immagine come formato, larghezza, altezza e un istogramma di valori di colore.
Java 8 in App Engine supporta le immagini native Java Lezioni di manipolazione, come AWT e Java2D insieme con l’API dell’immagine del motore dell’app.
Il servizio immagine può accettare i dati dell’immagine direttamente dall’applicazione o è possibile utilizzare un valore da Google Cloud Storage. Il servizio immagine può anche utilizzare un valore di Blobstore cloud, ma si consiglia di utilizzare la memorizzazione cloud.
Le immagini memorizzate in stoccaggio cloud e cloud blobstore possono raggiungere il valore massimo consentito per il servizio corrispondente. L’immagine trasformata viene visualizzata direttamente sull’app e deve essere inferiore a 32 megabyte.
trasforma le immagini in Java 8
L’API del servizio immagine consente di applicare le trasformazioni alle immagini da un servizio invece di eseguire l’elaborazione delle immagini sul server delle applicazioni. L’app prepara un oggetto Image
con i dati immagine che verranno trasformati e un oggetto Transform
con le istruzioni per trasformare l’immagine. L’app ottiene un oggetto ImagesService
e quindi chiama il tuo metodo applyTransform()
con Image
e il Oggetti Transform
. Il metodo mostra un oggetto Image
dell’immagine trasformata.
L’app riceve le istanze ImagesService
, Image
e Transform
usando ImagesServiceFactory
.
// Get an instance of the imagesService we can use to transform images.ImagesService imagesService = ImagesServiceFactory.getImagesService();// Make an image directly from a byte array, and transform it.Image image = ImagesServiceFactory.makeImage(imageBytes);Transform resize = ImagesServiceFactory.makeResize(100, 50);Image resizedImage = imagesService.applyTransform(resize, image);// Write the transformed image back to a Cloud Storage object.gcsService.createOrReplace( new GcsFilename(bucket, "resizedImage.jpeg"), new GcsFileOptions.Builder().mimeType("image/jpeg").build(), ByteBuffer.wrap(resizedImage.getImageData()));
È possibile combinare diverse trasformazioni in un’unica azione per mezzo di un’istanza CompositeTransform
. Controllare il riferimento API delle immagini.
Trasformazioni dell’immagine disponibili
Il servizio immagine può cambiare le dimensioni, ruotare, ruotare e tagliare le immagini e migliorare le fotografie. Puoi anche comporre diverse immagini in un’unica immagine.
Modifica della dimensione
È possibile modificare la dimensione dell’immagine mantenendo la stessa proporzione. Né la larghezza né l’immagine ridimensionata possono superare 4.000 pixel.
rotazione
È possibile ruotare l’immagine in incrementi di 90 gradi.
/ p>
rotazione orizzontale
È possibile ruotare l’immagine orizzontalmente.
ruotato verticalmente
È possibile ruotare l’immagine verticalmente.
tagliare
È possibile tagliare l’immagine con una data casella limite.
Io sarò fortunato
trasformazione “Io sarò fortunato” migliora i colori scuri e luminoso da un’immagine, regolare entrambi i colori e ottimizza il contrasto.
Formati di immagini
Il servizio Accetta i dati dell’immagine in JPEG, PNG, WEBP, formati GIF (incluso GIF animato), BMP, TIFF e ICO. Le immagini trasformate possono essere visualizzate nei formati JPEG, WebP e PNG.
Se il formato di ingresso e il formato di output sono diversi, il servizio converte i dati di input nel formato di output prima di eseguire la trasformazione.
Come trasformare le immagini
Il servizio immagine può utilizzare una memoria cloud di Google o un valore Blobstore come fonte di immagini per una trasformazione. Ci sono due modi per trasformare le immagini:
- È possibile utilizzare le immagini imervicefactory (), che consente di creare semplici trasformazioni di immagini, come finiture, ruotare e ruotare.
- Usa GetServingurl () Consente di modificare la dimensione delle immagini e tagliarle in modo dinamico in modo da non essere necessario memorizzare diverse dimensioni dell’immagine sul server. Con questo metodo, viene visualizzato un URL che offre l’URL che viene visualizzato l’immagine e le trasformazioni apportate all’immagine sono codificate in questo URL. In questa funzione, si presume che l’immagine non cambia. Se viene modificato dopo aver ottenuto l’URL, è possibile ottenere risultati inaspettati quando lo si utilizza.
Utilizzare l’immagine ImageServiceFactory ()
È possibile trasformare le immagini da cloud storage o Blobstore se la dimensione dell’immagine è inferiore al massimo consentito da questi due.Si noti che il risultato della trasformazione viene visualizzato direttamente sull’app e non deve superare il limite di risposta dell’API da 32 megabyte.
per trasformare una memoria cloud o un’immagine Blobstore in Java 8, crea l’oggetto Image
. Per fare ciò, chiamare il metodo statico e passalo un valore blobstore.BlobKey
. Il resto dell’API si comporta nel modo previsto. Il metodo mostra il risultato delle trasformazioni o genera un ImagesServiceFailureException
se il risultato è maggiore della dimensione massima di 32 megabyte.
// Make an image from a Cloud Storage object, and transform it.BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService();BlobKey blobKey = blobstoreService.createGsBlobKey("/gs/" + bucket + "/image.jpeg");Image blobImage = ImagesServiceFactory.makeImageFromBlob(blobKey);Transform rotate = ImagesServiceFactory.makeRotate(90);Image rotatedImage = imagesService.applyTransform(rotate, blobImage);// Write the transformed image back to a Cloud Storage object.gcsService.createOrReplace( new GcsFilename(bucket, "rotatedImage.jpeg"), new GcsFileOptions.Builder().mimeType("image/jpeg").build(), ByteBuffer.wrap(rotatedImage.getImageData()));
utilizza getservingurn ()
il metodo getservingurl () consente di generare un URL fisso e dedicato per Un’immagine che viene memorizzata in cloud storage o blobstore. Ad esempio:
// Create a fixed dedicated URL that points to the GCS hosted fileServingUrlOptions options = ServingUrlOptions.Builder .withGoogleStorageFileName("/gs/" + bucket + "/image.jpeg") .imageSize(150) .crop(true) .secureUrl(true);String url = imagesService.getServingUrl(options);
L’URL generato utilizza un’infrastruttura di consegna dell’immagine altamente ottimizzata separata dalla tua applicazione. Poiché l’immagine viene consegnata indipendentemente dalla tua applicazione, non genera un carico e può essere molto redditizio. L’URL che viene mostrato con questo metodo è sempre accesso pubblico, ma non può essere indovinato.
Se si desidera interrompere la consegna dell’URL, bruciarlo con il metodo deleteservinc ().
Il metodo mostra un URL codificato con le dimensioni specificate e gli argomenti di clipping. Se non si specifica alcun argomento, il metodo mostra l’URL dell’immagine predefinito, ad esempio:
http://lhx.ggpht.com/randomStringImageId
È possibile modificare la dimensione dell’immagine e tagliarlo dinamicamente Specifica degli argomenti nell’URL. Gli argomenti disponibili sono i seguenti:
-
=sxx
dovexx
è un numero intero di 0 2.560 che rappresenta la lunghezza , in pixel, sul lato più lungo dell’immagine. Ad esempio, se si aggiunge=s32
, la dimensione dell’immagine è cambiata in modo che la sua dimensione più lunga sia 32 pixel. -
=sxx-c
Dove XX è un numero intero da 0 a 2.560 che rappresenta la dimensione dell’immagine di taglio in pixel e-c
dice al sistema che taglia l’immagine.
# Resize the image to 32 pixels (aspect-ratio preserved)http://lhx.ggpht.com/randomStringImageId=s32# Crop the image to 32 pixelshttp://lhx.ggpht.com/randomStringImageId=s32-c
Server immagini e sviluppo
Il server di sviluppo utilizza la macchina locale per eseguire le funzionalità di servizio delle immagini
Il server Developer Java utilizza il telaio del lavoro dell’immagine per simulare il servizio immagine. La funzione per migliorare le foto “Avrò la fortuna” non è compatibile. Il formato dell’immagine Webp è supportato solo se è stato installato un componente aggiuntivo Decoder adatto. Ad esempio, è possibile utilizzare il componente aggiuntivo Encoder VP8 Java. Si noti che il metodo getServingUrl
non è disponibile sul server di sviluppo.
un chiarimento sulla rimozione
per smettere di fornire un’immagine memorizzata in Deposito cloud o Blobstore, chiama il metodo DeleteServinc ().
È necessario evitare di eliminare le immagini direttamente in cloud storage o blobstore, poiché in questo modo in questo modo può disabilitare l’accesso a questi attraverso l’URL attivo.
URL attivi smetteranno di funzionare se l’applicazione che li ha creati è disabilitato o cancellato, anche se l’immagine sottostante rimane disponibile.
commissioni, limiti e prezzi
In questo momento l’uso dell’API dell’immagine non genera alcun costo aggiuntivo. Controllare la pagina del prezzo del motore dell’app.
Ogni richiesta all’API dell’immagine viene presa in considerazione per la tassa di chiamata all’API della manipolazione dell’immagine. Un’applicazione può apportare diverse trasformazioni di un’immagine in un’unica chiamata all’API.
I dati inviati al servizio immagine sono considerati all’interno della commissione di dati inviati all’API (di immagini). I dati ricevuti dal servizio immagine vengono presi in considerazione per la commissione di dati ricevuta dall’API (di immagini).
Ogni trasformazione di un’immagine è considerata entro la commissione di trasformazioni eseguite.
Per ulteriori informazioni, vedere le tasse. Per vedere l’uso corrente della tua app, visitare la scheda Dettagli della commissione di Google Cloud Console.
Oltre alle tasse, i seguenti limiti vengono applicati all’uso del servizio immagine:
Limita | Quantità |
---|---|
Dimensione dei dati massima dell’immagine inviata a | 32 megabytes |
Dimensione dei dati massima dell’immagine ricevuta del | 32 Megabytes |
Dimensione dei dati massima dell’immagine inviata al servizio o ricevuto da questo | 50 megapixel |