

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Integração de otimização de imagem para criadores de frameworks
<a name="integrate-image-optimization-framework"></a>

Os autores do framework podem integrar o recurso de otimização de imagem do Amplify usando a especificação de implantação do Amplify Hosting. Para habilitar a otimização de imagem, seu manifesto de implantação deverá conter uma regra de roteamento direcionada ao serviço de otimização de imagem. O exemplo a seguir demonstra como configurar a regra de roteamento.

```
// .amplify-hosting/deploy-manifest.json
 
{
  "routes": [
    {
      "path": "/images/*",
      "target": {
        "kind": "ImageOptimization",
        "cacheControl": "public, max-age=31536000, immutable"
      }
    }
  ]
}
```

Para obter mais informações sobre como definir as configurações de otimização de imagem usando a especificação de implantação, consulte [Como usar a especificação de implantação do Amplify Hosting para configurar a saída da compilação](ssr-deployment-specification.md).

## Compreensão da API de otimização de imagem
<a name="understand-image-optimization-api"></a>

É possível invocar a otimização de imagem em runtime por meio do URL de domínio da aplicação Amplify, no caminho definido pela regra de roteamento.

```
GET https://{appDomainName}/{path}?{queryParams}
```

A otimização de imagem impõe as seguintes regras para as imagens.
+ O Amplify não pode otimizar os formatos GIF, APNG e SVG nem convertê-los para outro formato.
+ As imagens SVG não são exibidas a menos que a configuração `dangerouslyAllowSVG` esteja habilitada. 
+ A largura ou a altura das imagens de origem não podem exceder 11 MB ou 9.000 pixels. 
+ O limite de tamanho de uma imagem otimizada é de 4 MB.
+ HTTPS é o único protocolo compatível com o fornecimento de imagens com controle remoto URLs.

### Cabeçalhos HTTP
<a name="http-headers"></a>

O cabeçalho de solicitação HTTP **Accept** é usado para especificar os formatos de imagem, expressos como tipos MIME, permitidos pelo cliente (em geral, um navegador da Web). O serviço de otimização de imagem tentará converter a imagem para o formato especificado. O valor especificado para esse cabeçalho terá uma prioridade superior ao parâmetro de consulta de formato. Por exemplo, um valor válido para o cabeçalho **Accept** é `image/png, image/webp, */* `. A configuração de formatos especificada no manifesto de implantação do Amplify restringirá os formatos aos que estiverem na lista. Mesmo que o cabeçalho **Accept** solicite um formato específico, ele será ignorado se o formato não estiver na lista de permissões.

### Parâmetros de solicitação de URI
<a name="uri-request-parameters"></a>

A tabela a seguir descreve os parâmetros de solicitação de URI para otimização de imagem.


| Parâmetro de consulta | Tipo | Obrigatório | Description | Exemplo | 
| --- | --- | --- | --- | --- | 
| url | String | Sim | Um caminho relativo ou URL absoluto para a imagem de origem. Para um URL remoto, há suporte para o protocolo HTTPS. O valor deve estar codificado no URL.  | `?url=https%3A%2F%2Fwww.example.com%2Fbuffalo.png` | 
| width | Número | Sim | A largura da imagem otimizada em pixels. | `?width=800` | 
| height | Número | Não | A altura da imagem otimizada em pixels. Se não for especificada, a imagem passará por ajuste de escala automático para corresponder à largura. | `?height=600` | 
| fit | Valores de enumeração: `cover`, `contain`, `fill`, `inside`, `outside` | Não | Como a imagem é redimensionada para se ajustar à largura e à altura especificadas. | `?width=800&height=600&fit=cover` | 
| position | Valores de enumeração: `center`, `top`, `right`, `bottom`, `left` | Não | Uma posição a ser usada quando o ajuste for `cover` ou `contain`. | `?fit=contain&position=centre` | 
| trim | Número | Não | Apara pixels de todas as bordas que contenham valores semelhantes à cor de fundo especificada do pixel superior esquerdo. | `?trim=50` | 
| estender | Objeto | Não | Adiciona pixels às bordas da imagem usando a cor derivada dos pixels da borda mais próxima. O formato é `{top}_{right}_{bottom}_{left}`, com cada valor indicando o número de pixels a serem adicionados.  | `?extend=10_0_5_0` | 
| extract | Objeto | Não | Corta a imagem no retângulo especificado delimitado pela parte superior, esquerda, largura e altura. O formato é {left}\_{top}\_{width}\_{right}, com cada valor indicando o número de pixels a serem recortados.  | `?extract=10_0_5_0` | 
| formato | String | Não | O formato de saída desejado para a imagem otimizada. | `?format=webp` | 
| quality | Número | Não | A qualidade da imagem, de 1 a 100. Usado somente ao converter o formato da imagem. | `?quality=50` | 
| rotate | Número | Não | Gira a imagem de acordo com o ângulo especificado em número de graus. | `?rotate=45` | 
| flip | Booleano | Não | Espelha a imagem verticalmente (de cima para baixo) no eixo x. Isso sempre ocorre antes da rotação, se houver. | `?flip` | 
| flop | Booleano | Não | Espelha a imagem horizontalmente (da esquerda para a direita) no eixo y. Isso sempre ocorre antes da rotação, se houver. | `?flop` | 
| sharpen | Número | Não | Aprimoramento da nitidez na definição das bordas na imagem. Os valores válidos estão entre 0,000001 e 10. | `?sharpen=1` | 
| mediano | Número | Não | Aplica um filtro mediano. Isso remove o ruído ou suaviza as bordas de uma imagem. | `?sharpen=3` | 
| blur | Número | Não | Aplica um desfoque gaussiano com o sigma especificado. Os valores válidos vão de 0,3 a 1.000. | `?blur=20` | 
| gamma | Número | Não | Aplica uma correção de gama para melhorar o brilho percebido de uma imagem redimensionada. O valor precisar estar entre 1,0 e 3,0. | `?gamma=1` | 
| negate | Booleano | Não | Inverte as cores da imagem. | `?negate` | 
| normalize | Booleano | Não | Melhora o contraste da imagem ampliando sua iluminação para englobar uma faixa dinâmica completa. | `?normalize` | 
| threshold | Número | Não | Substitui qualquer pixel na imagem por um pixel preto, se sua intensidade for menor que o limite especificado. Ou por um pixel branco, se for maior que o limite. Os valores válidos estão entre 0 e 255. | `?threshold=155` | 
| tint | String | Não | Tinge a imagem usando o RGB fornecido enquanto preserva a iluminação da imagem.  | `?tint=#7743CE` | 
| grayscale | Booleano | Não | Transforma a imagem em tons de cinza (preto e branco). | `?grayscale` | 

### Código de status de resposta.
<a name="response-status-codes"></a>

A tabela a seguir descreve os código de status de resposta para otimização de imagem.

**Success - HTTP status code 200**  
A solicitação foi atendida com sucesso. 

**BadRequest - Código de status HTTP 400**  
+ Um parâmetro de consulta de entrada foi especificado incorretamente. 
+ O URL remoto não está listado como permitido na configuração `remotePatterns`. 
+ O URL remoto não é resolvido para uma imagem.
+ A largura ou altura solicitadas não estão listadas como permitidas na configuração `sizes`. 
+ A imagem solicitada é SVG, mas a configuração `dangerouslyAllowSvg` está desabilitada.

**Not Found - HTTP status code 404**  
A imagem de origem não foi encontrada. 

**Content too large - HTTP status code 413**  
A imagem de origem ou a imagem otimizada ultrapassa o tamanho máximo permitido em bytes.

### Noções básicas do armazenamento em cache otimizado de imagens
<a name="image-optimization-caching"></a>

O Amplify Hosting armazena em cache imagens otimizadas em nossa CDN para que solicitações subsequentes à mesma imagem, com os mesmos parâmetros de consulta, sejam atendidas diretamente do cache. O tempo de vida útil (TTL) do cache é controlado pelo cabeçalho `Cache-Control`. A lista a seguir descreve suas opções para especificar o cabeçalho `Cache-Control`.
+ Usando a chave `Cache-Control` dentro da regra de roteamento direcionada à otimização de imagem. 
+ Usando cabeçalhos personalizados definidos na aplicação Amplify.
+ Para imagens remotas, o cabeçalho `Cache-Control` retornado pela imagem remota será respeitado.

O `minimumCacheTTL` especificado nas configurações de otimização de imagem define o limite inferior da diretiva Cache-Control max-age. Por exemplo, se o URL de uma imagem remota responder com um `Cache-Control s-max-age=10`, mas o valor `minimumCacheTTL` for 60, o sistema usará 60. 