Cómo convertir un JPG a Base64
- Suelta un archivo
.jpgo.jpeg, elígelo con el selector de archivos o pega una imagen copiada con Ctrl+V. - Para fotos recién sacadas de una cámara o un teléfono, pon un Ancho máx. (por ejemplo 1200) y ajusta la Calidad. El valor por defecto es 85 %.
- Marca Quitar metadatos (EXIF) si la foto se va a compartir o publicar.
- Elige Salida como: Data URI es la opción por defecto y Base64 simple es lo que quieren la mayoría de las API. Después, Copiar salida.
La vista previa muestra las dimensiones en píxeles y, tras recodificar, el nuevo tamaño del archivo, así que puedes probar varios ajustes y ver cómo baja la cifra.
Qué hay dentro del Base64 de un JPG
Todos los archivos JPEG empiezan por el marcador SOI FF D8 FF, así que todos empiezan por /9j/ en Base64. Los caracteres siguientes indican qué cabecera viene después:
| El archivo empieza por | El Base64 empieza por | Origen típico |
|---|---|---|
FF D8 FF E0 + JFIF | /9j/4AAQSkZJRg | editores de imagen, exportaciones web, la mayoría de los convertidores |
FF D8 FF E1 + Exif | /9j/4 y luego caracteres variables | cámaras y teléfonos (primero el bloque EXIF) |
FF D8 FF DB | /9j/2w | codificadores mínimos o archivos sin metadatos |
Un JPEG de cámara lleva un bloque EXIF con el modelo del dispositivo, la hora de captura, la orientación y, si la ubicación estaba activada, las coordenadas GPS. Base64 no oculta nada de eso. Cualquiera que decodifique la cadena con Base64 a JPG obtiene el archivo original con los metadatos intactos.
Reducir las fotos antes de codificarlas
Una foto de un teléfono actual ocupa varios megabytes. En Base64 crece otro tercio, lo que es demasiado para una petición JSON, un archivo CSS o un correo HTML, y resulta lento en cualquier otro sitio.
Dos ajustes hacen casi todo el trabajo:
- Ancho máx. fija el ancho máximo en píxeles. Reducir el ancho a la mitad deja el número de píxeles en una cuarta parte.
- Calidad controla la compresión JPEG. Tiene efecto siempre que la foto se recodifica, es decir, con un Ancho máx., un formato en Convertir a o Quitar metadatos (EXIF) activado. Entre el 75 % y el 85 % la diferencia apenas se nota en una foto, mientras que el archivo queda mucho más pequeño que al 95–100 %.
Recodificar un JPEG siempre pierde algo de detalle, porque se decodifica y se vuelve a comprimir. Hazlo una sola vez, a partir del original, y evita pasar el resultado por el convertidor una segunda vez.
JPEG no tiene transparencia. Si conviertes a JPEG un PNG o WebP con fondo transparente, las partes transparentes se vuelven blancas. Quédate con PNG o WebP cuando necesites el canal alfa.
Dónde se usa el Base64 de un JPG
- Subida de fotos mediante API JSON, incluidos los modelos de visión de IA que describen o analizan imágenes. Muchos reducen las imágenes grandes por su cuenta, así que enviar un JPEG más pequeño agiliza la petición sin una pérdida visible.
- Miniaturas y placeholders incrustados en HTML, como una vista previa difuminada de 20 píxeles de ancho que se muestra mientras carga la imagen completa.
- Documentos de un solo archivo, por ejemplo un informe HTML con unas pocas fotos incrustadas.
Para fotos grandes en un sitio web, sigue siendo mejor un archivo de imagen normal: se puede guardar en caché, cargar de forma diferida y servir en varios tamaños con srcset.
Redimensionar y codificar en Python
Pillow redimensiona y recodifica la foto en unas pocas líneas, y la biblioteca estándar se encarga del Base64. Pillow no copia el EXIF al archivo nuevo salvo que se lo pases explícitamente, así que esto también quita los metadatos:
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")
Más sobre lectura de archivos y streaming en Base64 en Python.
Problemas habituales
- La foto aparece girada. Muchos teléfonos guardan los píxeles en la orientación del sensor y ponen la rotación en una etiqueta EXIF. Los navegadores actuales aplican esa etiqueta y, cuando la herramienta redibuja una foto, conserva la orientación visible. El software que ignora el EXIF puede mostrar la orientación en bruto.
- El Base64 es más largo de lo esperado. Mira el tamaño de entrada en el indicador. Una foto “pequeña” de una aplicación de mensajería puede tener aun así 3000 píxeles de ancho.
- Una API rechaza la imagen. Confirma si quiere el prefijo
data:image/jpeg;base64,o Base64 sin más, y envíaimage/jpegcomo tipo, noimage/jpg.
Preguntas frecuentes
¿En un data URI va image/jpg o image/jpeg?
image/jpeg. image/jpg no es un tipo registrado. Los navegadores muestran la imagen de todos modos porque analizan los bytes, pero las API que validan el tipo de medio pueden rechazarla.
¿Un JPG en Base64 sigue conteniendo mi ubicación GPS?
Sí, si el original la tenía. Base64 copia todos los bytes, EXIF incluido. Marca Quitar metadatos (EXIF) para eliminarlo; la foto se redibuja sin metadatos antes de codificarla.
¿Por qué el Base64 de mi JPG empieza por /9j/?
Todo JPEG empieza por los bytes FF D8 FF, y esos tres bytes se codifican exactamente como /9j/. Una cadena que empieza de otra forma no es un JPEG, diga lo que diga el nombre del archivo.
¿Cómo acorto el Base64 de una foto?
Reduce los píxeles y la calidad antes de codificar. Un Ancho máx. acorde al tamaño en pantalla y una Calidad de alrededor del 75–85 % reducen una foto de teléfono mucho más que cualquier cosa que puedas hacerle al propio Base64.