Conversor de JPG para Base64

Codifique imagens JPG e JPEG em Base64. Mantenha o arquivo original byte a byte ou recodifique-o com qualidade menor e largura reduzida para manter a string curta.

Funciona inteiramente no seu navegador. Nada é enviado.

Como usar

  1. Solte um arquivo .jpg ou .jpeg na área de arrastar e soltar, clique para escolher um ou cole uma imagem.
  2. Para manter o arquivo exatamente como está, deixe Converter para em Manter o original. Para reduzi-lo, escolha JPEG ou WebP e diminua a Qualidade.
  3. Defina uma Largura máxima se a foto for maior do que o tamanho em que será exibida.
  4. Copie a saída de que você precisa, como a tag img para uma página ou o Base64 puro para uma API, ou baixe-a como arquivo.

JPEG em resumo

O JPEG é o formato padrão para fotografias. Ele usa compressão com perdas, descartando detalhes que o olho mal percebe, e não tem transparência. Os arquivos terminam em .jpg, .jpeg ou às vezes .jfif, mas o tipo MIME é sempre image/jpeg; image/jpg não é um tipo registrado, embora muitos navegadores o aceitem. Um data URI de JPEG começa com data:image/jpeg;base64,/9j/, o marcador de início de imagem codificado.

Como reduzir uma foto antes de codificar

É nas fotos que o Base64 pesa mais: um JPEG de 200 KB vira cerca de 270 KB de texto. Duas configurações fazem a maior diferença:

  • Largura máxima. Reduzir a largura pela metade corta a quantidade de pixels para um quarto. Uma foto de celular com 4000 pixels de largura raramente é necessária nesse tamanho.
  • Qualidade. Valores entre 70 e 80% geralmente parecem iguais ao original na tela e são bem menores. Valores muito baixos mostram artefatos em blocos.

Converter para WebP com qualidade semelhante costuma gerar um resultado ainda menor. Observe o tamanho codificado exibido para cada configuração e fique com o menor resultado que ainda tenha boa aparência.

Metadados EXIF

Fotos de câmeras e celulares carregam metadados EXIF: modelo da câmera, data e hora e, às vezes, coordenadas de GPS. Sem conversão, a saída em Base64 contém os bytes originais, metadados incluídos, e qualquer pessoa que a decodificar poderá lê-los. É isso que você quer quando o arquivo exato importa, por exemplo, quando uma API verifica um hash ou lê a data da captura.

A conversão recodifica os pixels no navegador, e os dados EXIF não são transferidos. A saída fica menor e deixa de revelar onde a foto foi tirada.

Quando um data URI de JPEG vale a pena

Bons casos são pequenos placeholders desfocados (uma imagem de 20 a 40 pixels de largura, incorporada enquanto a foto completa é carregada sob demanda), miniaturas em respostas JSON e exportações HTML em arquivo único. Imagens de destaque e galerias devem ficar em arquivos separados, que o navegador pode armazenar em cache.

# Python
import base64
with open('photo.jpg', 'rb') as f:
    uri = 'data:image/jpeg;base64,' + base64.b64encode(f.read()).decode('ascii')

Perguntas frequentes

JPG é o mesmo que JPEG?

Sim. A extensão mais curta .jpg vem de sistemas que permitiam apenas três caracteres. As duas indicam o mesmo formato, com o tipo MIME image/jpeg.

A codificação Base64 reduz a qualidade do JPEG?

Não. O Base64 é uma representação sem perdas dos bytes do arquivo. A qualidade só muda se você escolher uma conversão, que recodifica a imagem com a qualidade definida.

Um data URI de JPEG pode ter fundo transparente?
Não, o JPEG não tem canal alfa. Para transparência, use PNG ou WebP.
A string Base64 contém a localização da minha foto?

Pode conter. Se o JPEG original tiver dados de GPS nos metadados EXIF e você o codificar sem alterações, a localização estará na string. Converter a imagem remove os metadados EXIF.