shadcn.io— miles de bloques de shadcn/ui
Ir al contenido

Cómo funciona de verdad la conversión de imágenes en el navegador (y por qué la construí así)

La razón de que exista toda esta web es un momento pequeño y tonto de desasosiego que tuve hace años. Necesitaba convertir una foto HEIC a JPG, escribí lo obvio en un buscador y aterricé en un convertidor que me pedía subir mi imagen a su servidor. Así que lo hice. Funcionó. Y luego me quedé ahí pensando: esa foto está ahora en alguna máquina de la que no sé nada, gestionada por gente que no conoceré nunca, guardada durante un tiempo que nadie me dijo. Para una captura cualquiera, vale. Pero no era una captura. Era una foto personal, y se la acababa de entregar a desconocidos por ahorrarme treinta segundos.

Ese es el problema que me propuse no volver a tener. La respuesta resultó ser que la subida nunca fue necesaria para empezar.

La vieja manera: alquilar el ordenador de un desconocido

Un convertidor online tradicional funciona como un servicio por correo. Envías tu archivo hacia arriba, a un servidor. El servidor ejecuta la conversión con software instalado en su máquina. Te devuelve el resultado hacia abajo. Tu imagen hizo un viaje de ida y vuelta por hardware que no controlas, y en algún punto del medio se quedó ahí, entera, en un disco que no es tuyo.

Cada promesa de privacidad atornillada a ese modelo es una promesa sobre comportamiento: el archivo se borra al cabo de una hora, nadie mira. A lo mejor se cumple. A lo mejor sí. No tienes forma de comprobarlo, y estás confiando en ello los bytes reales de tu archivo. La confianza es toda la arquitectura, y la confianza es justo lo que yo no quería andar gastando.

La nueva manera: tu navegador ya tiene el ordenador

Esto es lo que cambió. Los navegadores modernos pueden ejecutar programas reales y compilados a velocidad casi nativa, mediante algo llamado WebAssembly —WASM para abreviar—. Los códecs de imagen que antes vivían en un servidor —el código que lee un PNG, que codifica un WebP, que descodifica HEIC— pueden compilarse a WASM y ejecutarse dentro de la pestaña del navegador que ya tienes abierta.

Así que cuando sueltas un archivo en una página construida de esta forma, el software de conversión se descarga a tu equipo, una vez, como cualquier otra parte de la página web. A partir de ahí el trabajo de verdad —leer tu imagen, transcodificarla, escribir el archivo nuevo— ocurre en tu propio procesador, en tu propia memoria. El resultado se te devuelve directo como una descarga. Tu archivo no se envía a ningún sitio, porque no hay adonde enviarlo. No hay servidor alguno en el circuito.

Por eso puedo decir que tus archivos nunca salen de tu dispositivo y decirlo como un hecho, no como una política. No es que prometa no mirar. Es que no hay camino por el que tu imagen llegue hasta mí. No podría recuperar tu foto ni aunque me lo ordenara un juez, porque nunca estuvo en mi lado del cable. La privacidad no es una función que añadí encima. Es una consecuencia de dónde se ejecuta el código.

Cómo puedes comprobar que es cierto

No tienes que creerme, y esa es la parte que más me gusta. Abre las herramientas de desarrollo de tu navegador, mira la pestaña de red y convierte un archivo. Verás descargarse la página y el códec WASM una vez. No verás subir tu imagen. Mejor todavía: carga la página, apaga tu Wi-Fi y convierte algo igualmente. Sigue funcionando, porque todo lo que necesita ya está en tu equipo. Una herramienta que sube tus archivos no puede hacer eso. Esta sí.

La única limitación real

Prometí honestidad, así que aquí va. Ejecutar la conversión en tu propio dispositivo significa que usa tu propia memoria, y una pestaña del navegador no tiene memoria infinita para jugar.

Para archivos normales —fotos, capturas, logos, lo que la gente convierte a diario— esto no es problema. Pero si le lanzas algo genuinamente descomunal, una sola imagen a resolución extrema, o un lote enorme de golpe, puedes topar con el techo. Descodificar una imagen implica retener sus píxeles sin comprimir en memoria, que es mucho más grande que el archivo en disco, y una imagen gigante puede agotar lo que la pestaña tiene permitido. Cuando eso pasa, la conversión se arrastra o la pestaña se rinde.

Un servidor con 64 GB de RAM nunca tiene ese problema. Así que ahí está el trato, dicho a las claras: un convertidor en servidor puede masticar archivos más grandes de lo que tu dispositivo podría manejar jamás. Este enfoque no puede. Lo que te da a cambio es que tu archivo nunca sale de tus manos. Para la inmensa mayoría de lo que la gente convierte de verdad, es un trato que vale la pena hacer sin pensarlo dos veces. Para un raro archivo monstruoso, es un límite real, y prefiero decírtelo que fingir que no existe.

Por qué sigo pensando que es el valor por defecto correcto

La mayoría de las conversiones son archivos corrientes que nunca necesitaron tocar un servidor para empezar. La subida siempre fue un resto de una época en que los navegadores no podían hacer este trabajo por sí solos. Ahora sí pueden. Así que el valor por defecto sensato se dio la vuelta: deja el archivo en tu equipo, haz el trabajo en local, y echa mano de un servidor solo en la rara ocasión en que tu propio hardware de verdad no dé la talla.

Esa es toda la idea detrás de todo lo que hay aquí. Es la misma web que me construí para mí después de aquella tarde de desasosiego, para no tener que volver a entregarle una foto personal a un desconocido solo para cambiarle la extensión al archivo. Resulta que nunca hizo falta. A ti tampoco.

Artículos relacionados


Todos los artículos