App Engine oferece a capacidade de manipular dados de imagem por meio de um serviço de imagem dedicado. O serviço de imagem pode manipular imagens, junte-se a várias imagens em um, converter formatos de imagem, fornecer metadados de imagem como formato, largura, altura e um histograma de valores de cor.
java 8 no mecanismo app suporta imagens nativas do Java Classes de manipulação, como AWT e Java2D, juntamente com a API da Image do Engine App.
O serviço de imagem pode aceitar dados de imagem diretamente do aplicativo ou você pode usar um valor do Google Cloud Storage. O serviço de imagem também pode usar um valor de blobstore em nuvem, mas recomendamos o uso de armazenamento em nuvem.
As imagens armazenadas no armazenamento em nuvem e na nuvem BLOBStore podem atingir o valor máximo permitido para o serviço correspondente. A imagem transformada é exibida diretamente no aplicativo e deve ser inferior a 32 megabytes.
transforma imagens em java 8
A API do serviço de imagem permite aplicar transformações às imagens por um serviço em vez de executar o processamento de imagens no servidor de aplicativos. O aplicativo prepara um objeto Image
com os dados da imagem que serão transformados e um objeto Transform
com as instruções para transformar a imagem. O aplicativo obtém um objeto ImagesService
e, em seguida, ligue para o seu método applyTransform()
com o Image
e o objetos Transform
. O método mostra um objeto Image
da imagem transformada.
O aplicativo recebe as instâncias ImagesService
, 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()));
Você pode combinar várias transformações em uma única ação por meio de uma instância CompositeTransform
. Verifique a referência da API das imagens.
Transformações de imagem disponíveis
O serviço de imagem pode alterar o tamanho, girar, girar e cortar imagens e melhorar as fotografias. Você também pode compor várias imagens em uma única imagem.
Alterando o tamanho
Você pode alterar o tamanho da imagem, mantendo a mesma proporção. Nem largura nem a imagem redimensionada podem exceder 4.000 pixels.
rotação
Você pode girar a imagem em incrementos de 90 graus.
rotação horizontal
você pode girar a imagem horizontalmente.
verticalmente girado
você pode girar a imagem verticalmente.
Cortar
Você pode aparar a imagem com uma determinada caixa de limite.
Eu vou ter sorte
transformação “Eu vou ter sorte” melhora as cores escuras e brilhante de uma imagem, ajuste ambas as cores e otimize o contraste.
Formatos de imagem
o serviço Aceite dados de imagem nos formatos JPEG, PNG, WebP, GIF (incluindo GIF animado), BMP, TIFF e ICO. As imagens transformadas podem ser exibidas nos formatos JPEG, WebP e PNG.
Se o formato de entrada e saída forem diferentes, o serviço converte os dados de entrada para o formato de saída antes de fazer a transformação.
Como transformar imagens
O serviço de imagem pode usar um valor de armazenamento do Google Cloud ou blobstore como fonte de imagens para uma transformação. Há duas maneiras de transformar imagens:
- Você pode usar as imagens iMerviceFactory (), que permite que você faça transformações simples de imagens, como acabamento, girar e girar.
- Use GetServingURL () permite alterar o tamanho das imagens e aparafusá-las de uma maneira dinâmica para que você não precise armazenar tamanhos de imagem diferentes no servidor. Com este método, um URL que fornece a imagem é exibido e as transformações feitas à imagem são codificadas neste URL. Nesta função, é assumida que a imagem não muda. Se for modificado após a obtenção do URL, você poderá obter resultados inesperados quando você usá-lo.
Use a imagem imageserviceFactory ()
Você pode transformar imagens do armazenamento em nuvem ou blobstore se o tamanho da imagem for menor que o máximo permitido por esses dois.Observe que o resultado da transformação é exibido diretamente no aplicativo e não deve exceder o limite de resposta da API de 32 megabytes.
Para transformar uma imagem de armazenamento ou blobstore em Java 8, crie o objeto Image
. Para fazer isso, ligue para o método estático ImagesServiceFactory.makeImageFromBlob()
e passe um valor blobstore.BlobKey
. O resto da API se comporta da maneira esperada. O método Mostra o resultado das transformações ou gera um ImagesServiceFailureException
Se o resultado for maior que o tamanho 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()));
usa getservingurn ()
o método getservingurl () permite gerar um URL fixo e dedicado para Uma imagem armazenada em armazenamento em nuvem 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);
O URL gerado usa uma infraestrutura de entrega de imagem altamente otimizada que é separada do seu aplicativo. Como a imagem é entregue independentemente do seu aplicativo, ela não gera carga e pode ser altamente lucrativa. O URL que é mostrado com este método é sempre acesso público, mas não pode ser adivinhado.
Se você quiser parar de entregar o URL, gravá-lo com o método deleteservingurl ().
O método mostra um URL codificado com o tamanho especificado e os argumentos de recorte. Se você não especificar qualquer argumento, o método mostra o URL de imagem padrão, por exemplo:
http://lhx.ggpht.com/randomStringImageId
Você pode alterar o tamanho da imagem e cortá-lo dinamicamente Especificando os argumentos no URL. Argumentos disponíveis são os seguintes:
-
=sxx
ONDExx
é um inteiro de 0 2.560 representando o comprimento , em pixels, no lado mais longo da imagem. Por exemplo, se você adicionar=s32
, o tamanho da imagem é alterado para que sua dimensão mais longa seja de 32 pixels. -
=sxx-c
onde xx é um inteiro de 0 a 2.560 representando o tamanho da imagem de corte em pixels, e-c
informa ao sistema que corta a imagem.
# 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
Servidor de fotos e desenvolvimento
O servidor de desenvolvimento usa sua máquina local para executar os recursos de serviço de imagens
O Java Developer Server usa o quadro de trabalho de imagem para simular o serviço de imagem. O recurso para melhorar as fotos “eu terei sorte” não é compatível. O formato da imagem da WebP é suportado apenas se um complemento de decodificador adequado foi instalado. Por exemplo, o add-on do codificador Java VP8 pode ser usado. Observe que o método getServingUrl
não está disponível no servidor de desenvolvimento.
Um esclarecimento na remoção
para parar de entregar uma imagem armazenada em Armazenamento de nuvem ou blobstore, chama o método deleteServingurl ().
Você deve evitar excluir imagens diretamente no armazenamento em nuvem ou blobstore, pois fazer isso pode desativar o acesso a estes através do URL ativo.
URLs ativos vão parar de funcionar se o aplicativo que os criasse é desativado ou excluído, mesmo que a imagem subjacente permaneça disponível.
taxas, limites e preços
neste momento o uso da API de imagem não gera nenhum custo adicional. Marque a página Preço do Mecanismo do App.
Cada solicitação para a API de imagem é levada em conta para a taxa de chamada para a API de manipulação de imagem. Um aplicativo pode tornar várias transformações de uma imagem em uma única chamada para a API.
Os dados enviados para o serviço de imagem são considerados dentro da taxa de dados enviados para a API (de imagens). Os dados recebidos do serviço de imagem são levados em conta para a taxa de dados recebida da API (de imagens).
Cada transformação de uma imagem é considerada dentro da taxa de transformações executadas.
Para mais informações, veja taxas. Para ver o uso atual do seu aplicativo, visite a guia Detalhes da Taxa de Console do Google Cloud.
Além das taxas, os seguintes limites são aplicados ao uso do serviço de imagem:
limite | quantidade |
---|---|
Tamanho máximo de dados da imagem enviada para os | 32 megabytes |
Tamanho máximo de dados da imagem recebida do | 32 megabytes |
Tamanho máximo de dados da imagem enviada ao serviço ou recebido deste | 50 megapixels |