Descripció general de l’API d’Imatges per a Java 8

Python 2.7 / 3 | Java 8/11 | PHP | Ruby | Go 1.11 / 1.12 + | NODE.JS

App Engine ofereix la capacitat de manipular dades d’imatges mitjançant un servei d’imatges dedicat. El servei d’Imatges pot manipular imatges, unir diverses imatges en una de sola, convertir formats d’imatge, proporcionar metadades d’imatge com a format, ample, alçada i un histograma de valors de color.

Java 8 a App Engine admet les classes de manipulació d’imatges natives de Java, com AWT i Java2D juntament amb l’API d’imatges d’App Engine.

El servei d’imatges pot acceptar dades d’imatge directament des de l’aplicació o pot utilitzar un valor de Google Cloud Storage. El servei d’imatges també pot usar un valor de Blobstore de Cloud, però et recomanem utilitzar Cloud Storage.

Les imatges emmagatzemades en Cloud Storage i en Cloud Blobstore poden assolir el valor màxim permès per al servei corresponent. La imatge transformada es mostra directament a l’app i ha de ser inferior a 32 megabytes.

Transforma imatges en Java 8

L’API de el servei d’Imatges et permet aplicar transformacions a les imatges mitjançant un servei en lloc de realitzar el processament d’imatges al servidor d’aplicacions. L’app prepara un objecte Image amb les dades de la imatge que es transformarà i un objecte Transform amb les instruccions per transformar la imatge. L’app obté un objecte ImagesService i, després, crida al seu mètode applyTransform() amb la Image i els objectes Transform. El mètode mostra un objecte Image de la imatge transformada.

L’app obté les instàncies ImagesService, Image i Transform mitjançant la 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()));

Es poden combinar diverses transformacions en una sola acció mitjançant una instància CompositeTransform. Consulta la referència de l’API d’Imatges.

Transformacions d’imatge disponibles

El servei d’imatges pot canviar la mida, rotar, girar i retallar imatges, i millorar fotografies. També pot compondre diverses imatges en una sola imatge.

Canvi de mida

Pots canviar la mida de la imatge mantenint la mateixa proporció. Ni l’ample ni l’alt de la imatge redimensionada poden excedir els 4,000 píxels.

Rotació

Pots rotar la imatge en increments de 90 graus.

Gir de forma horitzontal

Pots girar la imatge horitzontalment.

Gir de forma vertical

Pots girar la imatge verticalment.

Retallada

Pots retallar la imatge amb un quadre de límit donat.

Segur que tinc sort

La transformació “Vaig a tenir sort” millora els colors foscos i brillants d’una imatge, ajusta els dos colors i optimitza el contrast.

Formats d’imatge

El servei accepta dades d’imatge en els formats JPEG, PNG, WebP, GIF (inclòs GIF animat), BMP, TIFF i també ICO. Les imatges transformades es poden mostrar en els formats JPEG, WebP i PNG.

Si el format d’entrada i el format de sortida són diferents, el servei converteix les dades d’entrada a el format de sortida abans de fer la transformació.

com transformar imatges

El servei d’imatges pot usar un valor de Google Cloud Storage o Blobstore com a font d’imatges per a una transformació. Hi ha dues formes de transformar imatges:

  1. Podeu fer servir la classe ImagesServiceFactory (), que et permet realitzar transformacions d’imatges simples, com retallar, girar i rotar.
  2. Utilitza getServingUrl () et permet canviar la mida de les imatges i retallar-se de manera dinàmica perquè no necessitis emmagatzemar diferents mides d’imatge al servidor. Amb aquest mètode, es mostra una URL que lliura la imatge, i les transformacions realitzades a la imatge es codifiquen en aquesta URL.En aquesta funció, se suposa que la imatge no canvia. Si es modifica després d’obtenir la URL, és possible que obtinguis resultats inesperats quan la fas servir.

Usa la classe ImagesServiceFactory ()

Pots transformar imatges de Cloud Storage o Blobstore si la mida de la imatge és menor a el màxim permès per aquests dos.Tingues en compte que el resultat de la transformació es mostra directament a l’app i no ha d’excedir el límit de resposta de l’API de 32 megabytes.

Per tal de transformar una imatge de Cloud Storage o Blobstore en Java 8, crea l’objecte Image. Per a això, crida a mètode estàtic ImagesServiceFactory.makeImageFromBlob() i passa-li un valor blobstore.BlobKey. La resta de l’API es comporta de la forma esperada. El mètode applyTransform() mostra el resultat de les transformacions o genera un ImagesServiceFailureException si el resultat és més gran que la mida màxima de 32 megabytes.

// 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()));

Usa getServingUrl ()

El mètode getServingUrl () et permet generar un URL fixa i dedicada per a una imatge que s’emmagatzema en Cloud Storage o Blobstore. Per exemple:

// 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);

La URL generada utilitza una infraestructura de lliurament d’imatges altament optimitzada que està separada de la teva aplicació. Com la imatge es lliura independentment de la teva aplicació, no genera càrrega i pot ser altament rendible. La URL que es mostra amb aquest mètode sempre és d’accés públic, però no es pot endevinar.

Si vols deixar de lliurar la URL, esborra-amb el mètode deleteServingUrl ().

el mètode mostra una URL codificada amb la mida especificada i els arguments de retallada. Si no especifiques cap argument, el mètode mostra la URL per defecte de la imatge, per exemple:

http://lhx.ggpht.com/randomStringImageId

Pots canviar la mida de la imatge i retallar-la de forma dinàmica especificant els arguments a la URL. Els arguments disponibles són els següents:

  • =sxx en el qual xx és un nombre enter de 0 a 2,560 que representa la longitud, en píxels, de el costat més llarg de la imatge. Per exemple, si agregues =s32, es canvia la mida de la imatge perquè la seva dimensió més llarga sigui de 32 píxels.
  • =sxx-c en el qual xx és un nombre enter de 0 a 2,560 que representa la mida de la imatge retallada en píxels, i -c li diu a el sistema que retalli la imatge.
# 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

Imatges i servidor de desenvolupament

el servidor de desenvolupament utilitza la teva màquina local per realitzar les capacitats de el servei de imatges.

el servidor de desenvolupador Java utilitza el marc de treball de ImageIO per simular el servei d’imatges. La característica per millorar fotos “Vaig a tenir sort” no és compatible. El format d’imatge WebP només s’admet si es va instal·lar un complement de descodificador adequat. Per exemple, es pot fer servir el complement de codificador Java VP8. Tingues en compte que el mètode getServingUrl no està disponible al servidor de desenvolupament.

Un aclariment sobre l’eliminació

Per deixar de lliurar una imatge emmagatzemada en Cloud Storage o en Blobstore, crida el mètode deleteServingUrl ().

Has d’evitar esborrar imatges de manera directa en Cloud Storage o Blobstore, ja que fer-ho pot inhabilitar l’accés a aquestes a través de la URL activa.

Les URL actives deixaran de funcionar si l’aplicació que les va crear s’inhabilita o s’esborra, encara que les imatges en roman disponible.

Quotes, límits i preus

En aquest moment l’ús de l’API d’Imatges no genera cap càrrec addicional. Consulta la pàgina de preus d’App Engine.

Cada sol·licitud a l’API d’imatges es té en compte per a la quota de trucades a l’API de manipulació d’imatges. Una aplicació pot realitzar diverses transformacions d’una imatge en una sola crida a l’API.

Les dades enviades a el servei d’imatges es consideren dins de la quota de dades enviades a l’API (d’Imatges). Les dades rebudes de l’servei d’imatges es tenen en compte per a la quota de dades rebudes de l’API (d’imatges).

Cada transformació d’una imatge es considera dins de la quota de transformacions executades.

Per obtenir més informació, consulta Quotes. Per veure l’ús actual de la quota del teu app, visita la pestanya de detalls de quotes de Google Cloud Console.

A més de les quotes, s’apliquen els següents límits a l’ús de l’servei d’imatges:

Límit Import
mida màxima de dades de la imatge enviada a el servei 32 megabytes
mida màxima de dades de la imatge rebuda de l’servei 32 megabytes
mida màxima de dades de la imatge enviada a el servei o rebuda d’aquest 50 megapíxels

Deixa un comentari

L'adreça electrònica no es publicarà. Els camps necessaris estan marcats amb *