Quando incorporar uma imagem como Base64 — e quando manter um arquivo

Compare o custo da imagem incorporada, o cache independente e a compatibilidade de e-mail e, em seguida, gere os dados de imagem corretos URI.

Incorporar uma imagem coloca seus bytes dentro de HTML, CSS ou outro documento. Ele pode tornar um pequeno artefato independente, mas também acopla a imagem à entrega e ao cache do documento. Decida com base no fluxo de trabalho completo, em vez de presumir que menos URLs sempre significam uma página mais rápida.

Crie o wrapper correto

Uma imagem PNG Dados URI começa com data:image/png;base64,, seguido pela representação Base64 do arquivo original. Um JPEG precisa image/jpeg; WebP necessidades image/webp. Renomear um tipo MIME não converte os bytes. Se o receptor exigir um JPEG, codifique novamente a imagem antes de construir seus dados URI.

<img src="data:image/png;base64,BASE64_PAYLOAD" alt="Descriptive alternative text" width="32" height="32">

O espaço reservado acima não é uma imagem funcional; substitua-o pela saída completa do codificador. Se a saída já contém o data: prefixo, não adicione outro. Mantenha as aspas equilibradas e evite quebras de linha introduzidas por editores de rich text.

Calcule o tamanho real

A parte codificada precisa de quatro caracteres para cada três bytes de entrada, arredondados para completar grupos. O prefixo Data URI adiciona um pouco mais. Para um arquivo de 30.000 bytes, apenas a carga útil é de 40.000 caracteres. A compactação HTML pode alterar o tamanho transferido, mas o navegador ainda precisa analisar o documento e decodificar a imagem. Meça a página real, não apenas o arquivo de origem.

Uma imagem veiculada separadamente pode ser armazenada em cache e reutilizada de forma independente nas páginas. Uma imagem incorporada está vinculada a cada documento que a contém. Ilustrações grandes e repetidas são, portanto, fracas candidatas para inlining automático. Pequenos ícones únicos em um relatório independente podem ser uma compensação razoável.

Verifique o destino

A Política de Segurança de Conteúdo pode restringir data: imagens. Os clientes de e-mail podem remover ou recusar conteúdo incorporado. Um arquivo visualizado em seu navegador não prova que o aplicativo do destinatário o exibirá. Teste a exportação exata, o cliente de e-mail ou o sistema downstream que você precisa para oferecer suporte.

Para visualizações locais temporárias, um Blob URL geralmente evita a criação de uma cadeia de caracteres Base64 grande. Revogue URL quando sua visualização for removida. Para HTML autônomo exportado, um dado URI pode ser apropriado. Preserve o texto alternativo e as dimensões em ambos os casos. Considerações sobre sintaxe e navegador são abordadas em MDN: URLs de dados.