A API Images permite publicar imagens diretamente a partir do
Cloud Storage ou do
Blobstore, e manipular essas imagens em tempo real. Para ver o conteúdo do pacote image, consulte a imagereferência do pacote.
Os contentores do Cloud Storage têm de usar listas de controlo de acesso detalhadas para que a API Images funcione. Para contentores que foram configurados para acesso de nível de contentor uniforme, a API Images não vai poder obter imagens nesse contentor e apresenta a mensagem de erro TransformationError.
Se o seu contentor estiver configurado desta forma, pode desativar o acesso uniforme ao nível do contentor.
Quando publica imagens a partir do Cloud Storage, a Images API usa uma conta de serviço gerida pela Google, dynamic_image_service@system.gserviceaccount.com,
para obter a imagem. Normalmente, isto é feito por si, mas se esta conta de serviço não tiver a função Storage Object Viewer no contentor, pode ocorrerem erros 403 Forbidden intermitentes. Isto acontece quando a imagem não está disponível na cache de publicação da Google e tem de ser obtida do contentor de origem.
Para conceder a autorização necessária, execute o seguinte comando gcloud:
gcloud storage buckets add-iam-policy-binding gs://[BUCKET_NAME] \
--member=serviceAccount:dynamic_image_service@system.gserviceaccount.com \
--role=roles/storage.objectViewer
Formatos de imagem
O serviço aceita dados de imagem nos formatos JPEG, PNG, WEBP, GIF (incluindo GIF animado), BMP, TIFF e ICO. As imagens transformadas podem ser devolvidas nos formatos JPEG, WEBP e PNG.
Se o formato de entrada e o formato de saída forem diferentes, o serviço converte os dados de entrada no formato de saída antes de realizar a transformação.
Publicação e redimensionamento de imagens
A função image.ServingURL
permite-lhe gerar um URL estável e dedicado para publicar miniaturas de imagens adequadas para a Web.
Pode armazenar uma única cópia da sua imagem original no Blobstore e, em seguida, pedir um URL por imagem de alto desempenho que possa publicar a imagem redimensionada e/ou recortada automaticamente. A publicação a partir deste URL não incorre em qualquer carga de CPU ou publicação dinâmica na sua aplicação (embora a largura de banda continue a ser cobrada como habitualmente).
O URL devolvido pela função é sempre público, mas não é adivinhável. Atualmente, não são suportados URLs privados. Se quiser parar de publicar o URL, elimine-o
através da função
image.DeleteServingURL.
Se transmitir um valor image.ServingURLOptions à função, esta devolve um URL codificado com essas opções. Se transmitir
nil, a função devolve o URL predefinido da imagem, por exemplo:
http://lhx.ggpht.com/randomStringImageId
Pode redimensionar e recortar a imagem dinamicamente especificando os argumentos no URL. Os argumentos disponíveis são:
=sxx, ondexxé um número inteiro de 0 a 2560 que representa o comprimento, em píxeis, do lado mais longo da imagem. Por exemplo, adicionar=s32redimensiona a imagem para que a dimensão mais longa tenha 32 píxeis.=sxx-c, em que xx é um número inteiro de 0 a 2560 que representa o tamanho da imagem recortada em píxeis e-cindica ao sistema que deve recortar a imagem.
# 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
Publicar imagens do Cloud Storage através da API Blobstore
Se estiver a usar o Cloud Storage como um repositório de dados e a publicar as imagens através da API Blobstore, tem de criar uma chave de blob para o objeto do Cloud Storage.
Uma nota sobre a eliminação
Para parar a publicação de uma imagem armazenada no Cloud Storage ou no Blobstore, chame o método
image.DeleteServingURL.
Deve evitar eliminar diretamente imagens no Cloud Storage ou no Blobstore, uma vez que, ao fazê-lo, as imagens podem continuar acessíveis através do URL de publicação.
Os URLs de publicação deixam de funcionar se a aplicação que os criou for desativada ou eliminada, mesmo que a imagem subjacente permaneça disponível.