Conversor de JPG a Base64

Codifica imágenes JPG y JPEG en Base64. Conserva el archivo original byte a byte o vuelve a codificarlo con menos calidad y un ancho menor para que la cadena sea corta.

Se ejecuta por completo en tu navegador. No se sube nada.

Cómo se usa

  1. Suelta un archivo .jpg o .jpeg en la zona de arrastre, haz clic para elegir uno o pega una imagen.
  2. Para conservar el archivo tal cual, deja Convertir a en Mantener original. Para reducirlo, elige JPEG o WebP y baja la Calidad.
  3. Fija un Ancho máximo si la foto es más grande de lo que se va a mostrar.
  4. Copia la salida que necesites, como la etiqueta img para una página o el Base64 puro para una API, o descárgala como archivo.

JPEG en pocas palabras

JPEG es el formato estándar para fotografías. Usa compresión con pérdida, que descarta detalles que el ojo apenas percibe, y no admite transparencia. Los archivos terminan en .jpg, .jpeg o a veces .jfif, pero el tipo MIME siempre es image/jpeg; image/jpg no es un tipo registrado, aunque muchos navegadores lo toleran. Un data URI JPEG empieza por data:image/jpeg;base64,/9j/, el marcador de inicio de imagen ya codificado.

Reducir una foto antes de codificarla

Las fotos son donde más se nota el coste de Base64: un JPEG de 200 KB se convierte en unos 270 KB de texto. Dos ajustes marcan la mayor diferencia:

  • Ancho máximo. Reducir el ancho a la mitad deja el número de píxeles en una cuarta parte. Una foto de 4000 píxeles de ancho hecha con un teléfono rara vez hace falta a ese tamaño.
  • Calidad. Los valores de entre el 70 y el 80 % suelen verse igual que el original en pantalla y ocupan mucho menos. Los valores muy bajos producen artefactos en forma de bloques.

Convertir a WebP con una calidad similar suele dar un resultado aún más pequeño. Fíjate en el tamaño codificado que se muestra con cada ajuste y quédate con el resultado más pequeño que siga viéndose bien.

Metadatos EXIF

Las fotos de cámaras y teléfonos incluyen metadatos EXIF: modelo de cámara, fecha y hora y, a veces, coordenadas GPS. Sin conversión, la salida Base64 contiene los bytes originales, metadatos incluidos, y cualquiera que la decodifique puede leerlos. Eso es lo que quieres cuando importa el archivo exacto, por ejemplo cuando una API comprueba un hash o lee la fecha de captura.

Al convertir, los píxeles se vuelven a codificar en el navegador y los datos EXIF no se conservan. La salida es más pequeña y ya no revela dónde se tomó la foto.

Cuándo merece la pena un data URI JPEG

Encajan bien los marcadores de posición diminutos y difuminados (una imagen de 20 a 40 píxeles de ancho, incrustada mientras la foto completa se carga de forma diferida), las miniaturas en respuestas JSON y las exportaciones HTML de un solo archivo. Las imágenes de cabecera y las galerías deben ir en archivos separados que el navegador pueda guardar en caché.

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

Preguntas frecuentes

¿JPG es lo mismo que JPEG?

Sí. La extensión .jpg, más corta, viene de sistemas que solo permitían tres caracteres. Ambas corresponden al mismo formato, con el tipo MIME image/jpeg.

¿La codificación Base64 reduce la calidad del JPEG?

No. Base64 es una representación sin pérdida de los bytes del archivo. La calidad solo cambia si eliges una conversión, que vuelve a codificar la imagen con la calidad que indiques.

¿Puede un data URI JPEG tener fondo transparente?
No, JPEG no tiene canal alfa. Para la transparencia, usa PNG o WebP.
¿La cadena Base64 contiene la ubicación de mi foto?

Puede contenerla. Si el JPEG original tiene datos GPS en sus metadatos EXIF y lo codificas sin cambios, la ubicación está en la cadena. Al convertir la imagen se eliminan los metadatos EXIF.