App Engine ofrece a capacidade de manipular datos de imaxe mediante un servizo de imaxe dedicado. O servizo de imaxe pode manipular imaxes, unirse a varias imaxes nun só, converter os formatos de imaxe, proporcionar metadatos de imaxe como formato, ancho, altura e un histograma de valores de cor.
Java 8 en App Engine admite imaxes nativas de Java As clases de manipulación, como AWT e Java2D xunto coa API da imaxe do motor da aplicación.
O servizo de imaxe pode aceptar datos de imaxe directamente desde a aplicación ou pode usar un valor de Google Cloud Storage. O servizo de imaxe tamén pode usar un valor de blobstore en nube, pero recomendamos usar o almacenamento en nube.
As imaxes almacenadas no almacenamento en nube e a nube blobstore poden alcanzar o valor máximo permitido para o servizo correspondente. A imaxe transformada móstrase directamente na aplicación e debe ser inferior a 32 megabytes.
Transforma imaxes en Java 8
A API do servizo de imaxe permítelle aplicar transformacións ás imaxes por un servizo no canto de realizar procesamento de imaxes no servidor de aplicacións. A aplicación prepara un obxecto Image
cos datos da imaxe que se transformarán e un obxecto Transform
coas instrucións para transformar a imaxe. A aplicación obtén un obxecto ImagesService
e, a continuación, chame ao seu método applyTransform()
co Image
e a Obxectos Transform
. O método mostra un obxecto Image
da imaxe transformada.
A aplicación recibe as instancias ImagesService
, Image
e Transform
usando o 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()));
Pode combinar varias transformacións nunha única acción mediante unha instancia CompositeTransform
. Comprobe a referencia da API de imaxes.
Transformacións de imaxe dispoñibles
O servizo de imaxe pode cambiar o tamaño, xirar, xirar e cortar imaxes e mellorar as fotografías. Tamén pode compoñer varias imaxes nunha única imaxe.
Cambiar o tamaño
Pode cambiar o tamaño da imaxe mantendo a mesma proporción. Nin o ancho nin a imaxe redimensionada poden superar os 4.000 píxeles.
rotación
Pode xirar a imaxe en incrementos de 90 graos.
Rotación horizontal
Pode xirar a imaxe horizontalmente.
Xiro verticalmente
Pode xirar a imaxe verticalmente.
CUT UP
Pode recortar a imaxe cunha caixa de límite dada.
Vou ter sorte
transformación “Vou ter sorte” mellora as cores escuras e brillante dunha imaxe, axusta as dúas cores e optimiza o contraste.
Formatos de imaxe
O servizo Aceptar datos de imaxe nos formatos JPEG, PNG, WEBP, GIF (incluíndo GIF animado), BMP, TIFF e ICO. As imaxes transformadas pódense mostrar nos formatos JPEG, WEBP e PNG.
Se o formato de entrada e o formato de saída son diferentes, o servizo converte os datos de entrada no formato de saída antes de facer a transformación.
Como transformar imaxes
O servizo de imaxe pode usar un valor de Google Cloud ou o valor de blobstore como fonte de imaxes para unha transformación. Existen dúas formas de transformar imaxes:
- Pode usar as imaxes imervicefactory (), que permite facer transformacións de imaxe sinxelas, como recortar, xirar e xirar.
- Usar GetVingurur () permítelle cambiar o tamaño das imaxes e recortarlas de xeito dinámico para que non necesite almacenar diferentes tamaños de imaxe no servidor. Con este método, aparece unha URL que entrega a imaxe e as transformacións feitas á imaxe están codificadas neste URL. Nesta función, suponse que a imaxe non cambia. Se se modifica despois de obter a URL, pode obter resultados inesperados cando o use.
Use a imaxe ImageServiceFactory ()
Pode transformar as imaxes do almacenamento en nube ou blobstore se o tamaño da imaxe é inferior ao máximo permitido por estes dous.Teña en conta que o resultado da transformación móstrase directamente na aplicación e non debe exceder o límite de resposta da API de 32 megabytes.
Co fin de transformar unha imaxe de almacenamento de nube ou blobstore en Java 8, crear o obxecto Image
. Para facelo, chame ao método estático e pasalo cun valor blobstore.BlobKey
. O resto da API compórtase do xeito esperado. O método applyTransform()
mostra o resultado das transformacións ou xera un ImagesServiceFailureException
se o resultado é maior que o tamaño máximo 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()));
Usos GOTERVINGURL ()
O método GOTERVINGURL () permítelle xerar un URL fixo e dedicado para unha imaxe almacenada en almacenamento en nube ou blobstore. Por exemplo:
// 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);
A URL xerada usa unha infraestrutura de entrega de imaxes altamente optimizada que está separada da súa aplicación. A medida que a imaxe se entrega independentemente da súa solicitude, non xera carga e pode ser moi rendible. A URL que se mostra con este método é sempre o acceso público, pero non se pode adiviñar.
Se desexa deixar de entregar a URL, gravalo co método DeleTeServingURL ().
O método mostra un URL codificado co tamaño especificado e os argumentos de recorte. Se non especifica ningún argumento, o método mostra a URL de imaxe por defecto, por exemplo:
http://lhx.ggpht.com/randomStringImageId
Pode cambiar o tamaño da imaxe e cortalo de xeito dinámico Especificando os argumentos da URL. Os argumentos dispoñibles son os seguintes:
-
=sxx
ondexx
é un número enteiro de 0 2.560 que representa a lonxitude , en píxeles, no lado máis longo da imaxe. Por exemplo, se engades=s32
, o tamaño da imaxe cambia para que a súa dimensión máis longa sexa de 32 píxeles. -
=sxx-c
Onde xx é un número enteiro de 0 a 2.560 que representa o tamaño da imaxe de corte en píxeles e-c
dille ao sistema que reduce a imaxe.
# 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
Fotos e servidor de desenvolvemento
O servidor de desenvolvemento usa a máquina local para realizar as capacidades de servizo das imaxes
O servidor Java Developer usa o marco de traballo de imaxe para simular o servizo de imaxe. A característica para mellorar as fotos “Vou ter sorte” non é compatible. O formato de imaxe web só se admite se se instalou un complemento de descodificador axeitado. Por exemplo, pódese empregar o complemento de codificador Java VP8. Teña en conta que o método getServingUrl
non está dispoñible no servidor de desenvolvemento.
Unha aclaración sobre a eliminación
Para deixar de entregar unha imaxe almacenada en Almacenamento de nubes ou blobstore, chama o método deleteservingurl ().
Debes evitar a eliminación de imaxes directamente en almacenamento en nube ou blobstore, desde que facelo pode desactivar o acceso a estes a través da URL activa.
URL activo deixará de funcionar se a aplicación que os creou Está desactivado ou eliminado, aínda que a imaxe subxacente permaneza dispoñible.
Tarifas, límites e prezos
Neste momento o uso da API da imaxe non xerar ningunha carga adicional. Comprobe a páxina de prezos do motor da aplicación.
Cada solicitude á API da imaxe tense en conta para a taxa de chamada á API da manipulación da imaxe. Unha aplicación pode facer varias transformacións dunha imaxe nunha soa chamada á API.
Os datos enviados ao servizo de imaxe considéranse dentro da taxa de datos enviada á API (de imaxes). Os datos recibidos do servizo de imaxe tómense en conta a taxa de datos recibida da API (de imaxes).
Cada transformación dunha imaxe considérase dentro da taxa de transformacións executadas.
Para obter máis información, consulte taxas. Para ver o uso actual da súa aplicación, visite a pestana de detalles da taxa da consola de Google Cloud.
Ademais das taxas, os seguintes límites aplícanse ao uso do servizo de imaxe:
límite | valor |
---|---|
Tamaño máximo de datos da imaxe enviada ao | 32 megabytes |
Tamaño máximo de datos da imaxe recibida do | 32 megabytes |
tamaño máximo de datos da imaxe enviada ao servizo ou Recibido a partir deste | 50 megapíxeles |