Como converter um JPG para Base64
- Arraste um arquivo
.jpgou.jpeg, escolha-o no seletor de arquivos ou cole uma imagem copiada com Ctrl+V. - Para fotos tiradas direto da câmera ou do celular, defina Largura máx. (por exemplo 1200) e ajuste a Qualidade. O padrão é 85%.
- Marque Remover metadados (EXIF) se a foto for compartilhada ou publicada.
- Escolha Saída como: Data URI é o padrão, Base64 puro é o que a maioria das APIs quer. Depois clique em Copiar saída.
A prévia mostra as dimensões em pixels e, depois da recodificação, o novo tamanho do arquivo, então dá para testar algumas configurações e ver o número cair.
O que há no Base64 de um JPG
Todos os arquivos JPEG começam com o marcador SOI FF D8 FF, então todos começam com /9j/ em Base64. Os caracteres seguintes indicam qual cabeçalho vem depois:
| O arquivo começa com | O Base64 começa com | Origem típica |
|---|---|---|
FF D8 FF E0 + JFIF | /9j/4AAQSkZJRg | editores de imagem, exportações para web, a maioria dos conversores |
FF D8 FF E1 + Exif | /9j/4 e depois caracteres variáveis | câmeras e celulares (bloco EXIF primeiro) |
FF D8 FF DB | /9j/2w | codificadores enxutos ou que removem metadados |
Um JPEG de câmera traz um bloco EXIF com o modelo do aparelho, a hora da captura, a orientação e, se a localização estava ligada, as coordenadas de GPS. O Base64 não esconde nada disso. Quem decodifica a string com o Base64 para JPG recebe o arquivo original com os metadados intactos.
Reduzir fotos antes de codificar
Uma foto de celular moderna tem vários megabytes. Em Base64 ela cresce mais um terço, o que é demais para uma requisição JSON, um arquivo CSS ou um e-mail HTML, e lento em qualquer outro lugar.
Duas configurações fazem a maior parte do trabalho:
- Largura máx. define a largura máxima em pixels. Cortar a largura pela metade reduz o número de pixels a um quarto.
- Qualidade controla a compressão JPEG. Ela vale sempre que a foto é recodificada, ou seja, quando Largura máx., um formato em Converter para ou Remover metadados (EXIF) está definido. Entre 75% e 85% a diferença é difícil de ver numa foto, enquanto o arquivo fica bem menor que em 95–100%.
Recodificar um JPEG sempre perde um pouco de detalhe, porque ele é decodificado e compactado de novo. Faça isso uma vez, a partir do original, e evite passar o resultado pelo conversor uma segunda vez.
O JPEG não tem transparência. Se você converter para JPEG um PNG ou WebP com fundo transparente, as partes transparentes ficam brancas. Mantenha PNG ou WebP quando precisar do canal alfa.
Onde o Base64 de JPG é usado
- Upload de fotos por APIs JSON, incluindo modelos de IA com visão que descrevem ou analisam imagens. Muitos deles reduzem imagens grandes do lado deles, então mandar um JPEG menor acelera a requisição sem perda visível.
- Miniaturas e placeholders inline em HTML, como uma prévia desfocada de 20 pixels de largura exibida enquanto a imagem completa carrega.
- Documentos de arquivo único, por exemplo um relatório HTML com algumas fotos embutidas.
Para fotos grandes num site, um arquivo de imagem normal continua sendo melhor: ele pode ficar em cache, ser carregado sob demanda e servido em vários tamanhos com srcset.
Redimensionar e codificar em Python
O Pillow redimensiona e recodifica a foto em poucas linhas, e a biblioteca padrão cuida do Base64. O Pillow não copia o EXIF para o novo arquivo a menos que você o passe explicitamente, então isso também remove os metadados:
import base64, io
from PIL import Image
with Image.open("photo.jpg") as im:
im.thumbnail((1024, 1024))
buf = io.BytesIO()
im.save(buf, "JPEG", quality=80)
b64 = base64.b64encode(buf.getvalue()).decode("ascii")
Mais sobre leitura de arquivos e streaming em Base64 em Python.
Problemas comuns
- A foto aparece girada. Muitos celulares gravam os pixels na orientação do sensor e põem a rotação numa tag EXIF. Os navegadores atuais aplicam essa tag, e quando a ferramenta redesenha uma foto ela mantém a orientação visível. Softwares que ignoram o EXIF podem mostrar a orientação bruta.
- O Base64 ficou mais longo que o esperado. Confira o tamanho da entrada no medidor. Uma foto “pequena” vinda de um mensageiro ainda pode ter 3000 pixels de largura.
- Uma API rejeita a imagem. Confirme se ela quer o prefixo
data:image/jpeg;base64,ou Base64 puro, e envieimage/jpegcomo tipo, nãoimage/jpg.
Perguntas frequentes
No data URI é image/jpg ou image/jpeg?
image/jpeg. image/jpg não é um tipo registrado. Os navegadores mostram a imagem mesmo assim porque analisam os bytes, mas APIs que validam o media type podem rejeitá-lo.
Um JPG em Base64 ainda contém minha localização GPS?
Contém, se o original tinha. O Base64 copia cada byte, EXIF incluído. Marque Remover metadados (EXIF) para removê-lo; a foto é redesenhada sem metadados antes da codificação.
Por que o Base64 do meu JPG começa com /9j/?
Todo JPEG começa com os bytes FF D8 FF, e esses três bytes viram exatamente /9j/. Uma string que começa diferente não é JPEG, diga o nome do arquivo o que disser.
Como deixar o Base64 de uma foto mais curto?
Reduza os pixels e a qualidade antes de codificar. Uma Largura máx. igual ao tamanho de exibição e uma Qualidade por volta de 75–85% encolhem uma foto de celular muito mais do que qualquer coisa que você faça com o próprio Base64.