Conversor GIF a PNG — Extracción del Primer Frame en el Navegador vía Canvas
Convierte imágenes GIF (CompuServe Graphics Interchange Format Versión 89a, lanzada en julio de 1989; documento de especificación con fecha 31 de julio de 1990) a PNG sin pérdida (W3C Recommendation 10 de noviembre de 2003 / ISO/IEC 15948:2004, comprimido con DEFLATE según RFC 1951 Deutsch mayo de 1996). La paleta de 256 colores por frame del GIF89a (con tablas de color globales y locales por frame opcionales) mapea limpiamente al RGB de 24 bits más alfa de 8 bits del PNG — no se pierde información en la dirección de mejora de color. Para GIFs animados, la herramienta extrae solo el primer frame vía el decodificador GIF integrado del navegador (que lee el LSD + GCT + primer descriptor de imagen y se detiene); la extracción multi-frame necesitaría un splitter de GIF dedicado o una herramienta vídeo-a-frames. La conversión corre localmente vía WHATWG Canvas drawImage + HTMLCanvasElement.toBlob('image/png'). Contexto histórico: la compresión LZW del GIF (Welch 1985, U.S. Patent 4.558.302 asignada a Sperry / luego Unisys) estuvo patentada desde 1985 hasta que la patente expiró el 20 de junio de 2003 en EEUU (Reino Unido / Francia / Alemania / Italia 18 de junio de 2004; Japón 20 de junio de 2004; Canadá 7 de julio de 2004) — PNG se creó específicamente en 1995-1996 como sustituto sin patentes del GIF durante esa era de aplicación del LZW. Los archivos nunca salen del dispositivo.
Cómo convertir GIF a PNG
- Arrastra un .gif a la herramienta o haz clic para seleccionarlo. El decodificador GIF integrado del navegador lee el LSD + GCT + primer descriptor de imagen (los GIFs animados solo tienen el primer frame extraído).
- La herramienta decodifica el primer frame y prepara una copia PNG en las dimensiones nativas del origen, mapeando la paleta GIF de 256 colores al RGB de 24 bits del PNG.
- Previsualiza el resultado. La salida PNG es sin pérdida desde los píxeles decodificados, así que la salida casa píxel a píxel con el frame origen dentro del límite de la paleta original de 256 colores del GIF.
- La transparencia GIF (máscara binaria de 1 bit vía Transparent Color Index) se preserva al modo RGBA del PNG; los píxeles opacos quedan opacos en PNG.
- Pulsa Descargar para guardar el PNG. El GIF original queda intacto en el disco — los archivos nunca salen del dispositivo.
Casos de uso comunes
- Extraer una imagen poster estática de un GIF animado para usarla como miniatura de vídeo o imagen de compartir en redes sociales (el decodificador GIF del navegador lee solo el primer frame).
- Convertir GIFs web heredados a PNG para herramientas de diseño o slots de CMS que no aceptan GIF como formato de entrada (las herramientas de diseño modernas han ido descartando GIF como formato primario de assets).
- Preservar transparencia al migrar assets GIF heredados a una pipeline moderna — la máscara alfa binaria de 1 bit del GIF viaja limpia al modo RGBA del PNG.
- Obtener un máster PNG sin pérdida desde un GIF antes de reexportar a WebP o AVIF (PNG es el intermedio sin pérdida seguro que evita la cuantización encadenada).
- Producir alternativas PNG para entornos que ya no soportan GIF (raro en 2026 pero ocasionalmente encontrado en flujos de migración de archivos).
Preguntas frecuentes
¿Exporta todos los frames de un GIF animado?
No. Solo se convierte el primer frame porque el decodificador GIF integrado del HTMLImageElement del navegador lee solo hasta el primer descriptor de imagen al cargar un GIF en una <img> estática. Para extracción multi-frame (p. ej. exportar los 24 frames de un GIF animado como PNGs separados), usa un splitter de GIF dedicado que incluya su propio parser GIF, o una herramienta vídeo-a-frames que trate el GIF como una pista de vídeo. La imagen poster del primer frame es el sustituto PNG práctico para miniaturas de GIFs animados.
¿Se preserva la transparencia del GIF?
Sí, byte a byte. La transparencia GIF es una máscara binaria de 1 bit vía el Transparent Color Index de la Graphic Control Extension — cada píxel es totalmente opaco o totalmente transparente (sin gradientes alfa suaves en GIF89a). El modo RGBA del PNG (alfa de 8 bits por píxel) lleva esa máscara binaria sin pérdida: los píxeles GIF transparentes quedan como píxeles PNG con alfa=0, los píxeles GIF opacos quedan como píxeles PNG con alfa=255. La vía Canvas 2D Context drawImage preserva esto byte a byte.
¿El PNG será más pequeño que el GIF?
Para GIFs estáticos de un frame con contenido de color plano (logos, iconos, capturas de pantalla): a menudo sí, porque el DEFLATE de PNG maneja secuencias de color plano más eficientemente que el LZW del GIF para el mismo contenido. Para GIFs fotográficos (que difuminaron el original en 256 entradas de paleta): PNG a veces es mayor porque tiene que codificar cada punto de dither exactamente. Para GIFs animados: no es comparable — solo se extrae el primer frame, así que la comparación de tamaño es PNG de un frame vs el GIF animado entero (el PNG obviamente será menor).
¿Por qué se creó PNG en 1996?
Específicamente como sustituto sin patentes del GIF durante la era de aplicación del LZW. El algoritmo de compresión LZW en el corazón del GIF (Welch 1985, U.S. Patent 4.558.302 asignada a Sperry / luego Unisys) había estado patentado desde 1985, pero Unisys empezó a aplicar exigencias de royalties contra codificadores GIF a finales de 1994. PNG se desarrolló en 1995 por un grupo informal interindustrial convocado por Thomas Boutell en el grupo de noticias comp.graphics usando compresión DEFLATE sin patentes (RFC 1951 Deutsch, mayo de 1996), publicado después como W3C Recommendation el 1 de octubre de 1996 y posteriormente como RFC 2083 (Boutell et al., marzo de 1997) para que la web pudiera tener un formato ráster sin pérdida sin complejidad de licencias. La patente LZW finalmente expiró el 20 de junio de 2003 en EEUU (contrapartes internacionales 2004), pero para entonces PNG se había convertido en el formato web sin pérdida dominante.
¿Se sube mi archivo?
No. La decodificación + dibujo en canvas + codificación PNG corren todos del lado cliente vía WHATWG Canvas drawImage + HTMLCanvasElement.toBlob('image/png'). La pestaña Network de DevTools muestra cero peticiones de subida durante la conversión.
GIF89a → PNG: paleta de 256 colores → mejora a RGB de 24 bits y el contexto histórico de patentes
La conversión GIF → PNG es estructuralmente una mejora en capacidad: GIF89a está limitado a 256 colores por frame (indexado de 8 bits vía Global o Local Colour Table según la spec del 31 de julio de 1990 en w3.org/Graphics/GIF/spec-gif89a.txt), lo que produce posterización visible en contenido fotográfico con gradientes continuos de color. PNG soporta RGB pleno de 24 bits (8 bits por canal, 16,7 millones de colores) más alfa de 8 bits con compresión DEFLATE sin pérdida (RFC 1951 Deutsch, mayo de 1996, LZ77 + Huffman con ventana deslizante de 32 KB) — así que cualquier sutileza de color que el GIF intentara difuminar (dither) en su paleta de 256 entradas pasa limpia al PNG. Tres consideraciones técnicas que las herramientas más básicas omiten: (1) Manejo de GIF animado: el decodificador GIF integrado del navegador lee solo el primer frame al cargar en HTMLImageElement; el contenido animado multi-frame no puede llevarse a través de Canvas toBlob('image/png'), que siempre emite un PNG de un solo frame (APNG, originalmente una extensión de Mozilla, se incorporó al W3C PNG 3ª Edición el 24 de junio de 2025 y ahora está soportado en Chrome 59+, Firefox 3+, Safari 8+, Edge 75+ — pero Canvas toBlob no emite APNG). La imagen poster del primer frame es el sustituto práctico para miniaturas de GIFs animados. (2) Transparencia GIF (máscara binaria de 1 bit vía el Transparent Color Index de la Graphic Control Extension) mapea al modo RGBA de PNG con cada píxel totalmente opaco o totalmente transparente — sin bordes alfa suaves ya que GIF no los almacena. (3) Contexto histórico de patentes: la compresión LZW del GIF estuvo patentada (Welch 1985 / Sperry / Unisys US 4.558.302), causando la era de aplicación 1995-2003 durante la cual Unisys exigió royalties a los codificadores GIF. PNG se creó específicamente para ser sin patentes. La patente expiró el 20 de junio de 2003 en EEUU (contrapartes internacionales 18 de junio de 2004 en RU/FR/DE/IT, 20 de junio de 2004 en Japón, 7 de julio de 2004 en Canadá), pero para entonces PNG se había convertido en el formato ráster sin pérdida dominante para la web.
- Origen GIF decodificado según CompuServe Graphics Interchange Format Versión 89a (julio de 1989; documento de spec 31 de julio de 1990)
- Extracción del primer frame de GIF animado vía decodificador GIF nativo del navegador (HTMLImageElement lee solo el primer frame)
- Salida PNG según W3C Recommendation 10 de noviembre de 2003 / ISO/IEC 15948:2004 con RGB pleno de 24 bits + alfa de 8 bits
- La salida PNG usa compresión DEFLATE según RFC 1951 Deutsch (mayo de 1996, LZ77 + Huffman, ventana deslizante de 32 KB) — sin patentes, a diferencia del LZW del GIF (U.S. Patent 4.558.302 expirada el 20 de junio de 2003)
- Transparencia GIF (máscara binaria de 1 bit vía Transparent Color Index de la Graphic Control Extension) preservada al modo RGBA del PNG
- Paleta GIF de 256 colores se mejora limpiamente al RGB de 24 bits del PNG — la sutileza de color que el GIF difuminó en su paleta pasa limpia
- En el navegador vía WHATWG Canvas drawImage + HTMLCanvasElement.toBlob('image/png') — sin subida
- Opera en sRGB (IEC 61966-2-1:1999) a precisión de 8 bits; los colores de la paleta GIF mapean a sRGB durante la decodificación
Gratis. Sin registro. Sin subidas. Anuncios mediante AdSense (con consentimiento).
Fuentes (7)
- CompuServe Incorporated (1990). Graphics Interchange Format Version 89a. Specification document dated 31 July 1990 (w3.org/Graphics/GIF/spec-gif89a.txt) — GIF89a release July 1989 added animation, transparency, interlacing, and application-specific metadata to the original GIF87a; 256-colour palette per frame with global colour table and optional local colour tables; LZW compression of pixel-index data.
- Welch, T. A. (Sperry Corporation, later Unisys) (1985). High speed data compression and decompression apparatus and method (LZW). U.S. Patent 4,558,302, filed 20 June 1983, granted 10 December 1985 — the LZW compression algorithm at the heart of GIF's pixel encoding; expired 20 June 2003 in the US, 18 June 2004 in the UK / France / Germany / Italy, 20 June 2004 in Japan, 7 July 2004 in Canada — clearing the legal cloud that had hung over GIF encoders for the algorithm's patented life.
- W3C (PNG Working Group) (2003). Portable Network Graphics (PNG) Specification (Second Edition). W3C Recommendation 10 November 2003 / ISO/IEC 15948:2004 — target lossless raster format with full 24-bit colour depth + 8-bit alpha channel; the historical alternative to GIF that PNG was specifically designed to replace (PNG was created in 1995-1996 in direct response to the LZW patent controversy).
- Deutsch, P. (1996). DEFLATE Compressed Data Format Specification version 1.3. RFC 1951, IETF (May 1996, Aladdin Enterprises — LZ77 + Huffman; 32 KB sliding window) — PNG IDAT compression algorithm; patent-free unlike LZW, which was a primary motivator for PNG's creation as a GIF replacement during the 1995-2003 LZW patent enforcement era.
- WHATWG (live). HTML Living Standard — HTMLImageElement (browser-native GIF + PNG decoding). html.spec.whatwg.org/#htmlimageelement — GIF and PNG are both natively decoded by every modern browser (Chrome, Firefox, Safari, Edge); the tool reads the first frame of the GIF via the browser's built-in GIF decoder, draws it onto a canvas at native dimensions, and serialises via toBlob('image/png').
- WHATWG (live). HTML Living Standard — Canvas 2D Context: drawImage() + toBlob('image/png'). html.spec.whatwg.org/#dom-context-2d-drawimage + canvas section 4.12.5 — browser conversion mechanism: load GIF into HTMLImageElement (decoder reads first frame only) → drawImage onto canvas at native dimensions → toBlob('image/png') with full 24-bit colour and alpha preservation.
- International Electrotechnical Commission (IEC) (1999). Multimedia systems and equipment — Colour measurement and management — Part 2-1: Default RGB colour space — sRGB. IEC 61966-2-1:1999 — default 8-bit RGB colour space the Canvas 2D path operates in; GIF's 256-colour palette is mapped to sRGB during decode, then PNG output preserves the sRGB pixel values losslessly.
Son las especificaciones del W3C, ISO/IEC, ITU-T e IETF que la herramienta implementa o sobre las que se apoya. Localízalas en w3.org, iso.org, itu.int o datatracker.ietf.org.
Por Marco B. ·