Articulo de referencia

GIF

GIF87a / GIF89a "},"developer":{"wt":"[[CompuServe]]"},"released":{"wt":"{{start date and age|df=yes|1987|6|15}} {{cite web |url= http://www.w3.org/Graphics/GIF/spec-gif87.txt |...

El formato de intercambio de gráficos ( GIF ; / ɡɪf / GHIF o / dʒɪf / JIF ) es un formato de imagen de mapa de bits que fue desarrollado por un equipo del proveedor de servicios en línea CompuServe , liderado por el científico informático estadounidense Steve Wilhite, y lanzado el 15 de junio de 1987. [ 1 ]

El formato puede contener hasta 8 bits por píxel , lo que permite que una sola imagen haga referencia a su propia paleta de hasta 256 colores diferentes, seleccionados del espacio de color RGB de 24 bits . También puede representar varias imágenes en un archivo, lo que se puede utilizar para animaciones , y permite una paleta independiente de hasta 256 colores para cada fotograma. Estas limitaciones de paleta hacen que el formato GIF sea menos adecuado para reproducir fotografías en color y otras imágenes con degradados de color , pero resulta idóneo para imágenes más sencillas, como gráficos o logotipos con áreas de color sólidas.

Las imágenes GIF se comprimen utilizando la técnica de compresión de datos sin pérdidas Lempel-Ziv-Welch (LZW) para reducir el tamaño del archivo sin degradar la calidad visual. Si bien alguna vez se utilizó ampliamente en la World Wide Web debido a su amplia implementación y portabilidad entre aplicaciones y sistemas operativos, el uso del formato ha disminuido por razones de espacio y calidad, siendo a menudo reemplazado por formatos más nuevos como PNG para imágenes estáticas y MP4 para videos. En este contexto, los videoclips cortos a veces se denominan "GIF" a pesar de no tener relación con el formato de archivo original. [ 3 ]

Historia

Los GIF animados con la leyenda "En construcción" eran una característica común de los sitios web sin terminar a finales de los 90 y principios de los 2000.
Los GIF animados como este fueron en su día un elemento decorativo habitual en las páginas web personales a finales de los 90 y principios de los 2000.

CompuServe introdujo GIF el 15 de junio de 1987 para proporcionar un formato de imagen en color para sus áreas de descarga de archivos. Esto reemplazó su formato anterior de codificación de longitud variable , que solo era en blanco y negro. GIF se popularizó porque utilizaba la compresión de datos Lempel-Ziv-Welch . Dado que esto era más eficiente que la codificación de longitud variable utilizada por PCX y MacPaint , las imágenes de tamaño considerable podían descargarse con bastante rapidez incluso con módems lentos .

La versión original de GIF se llamaba 87a. [ 1 ] Esta versión ya admitía múltiples imágenes en una secuencia.

En 1989, CompuServe lanzó una versión mejorada, llamada 89a, [ 2 ] Esta versión añadió:

  • Compatibilidad con retrasos en la animación
  • colores de fondo transparentes
  • almacenamiento de metadatos específicos de la aplicación
  • Permite que las etiquetas de texto se muestren como texto (sin incrustarlas en los datos gráficos). Sin embargo, esta función se usa con poca frecuencia. Los navegadores modernos no la admiten y ofrece poco control sobre las fuentes y el estilo.

Las dos versiones se pueden distinguir observando los primeros seis bytes del archivo (el " número mágico " o firma), que, cuando se interpretan como ASCII , se leen "GIF87a" o "GIF89a", respectivamente.

CompuServe impulsó la adopción de GIF al proporcionar utilidades de conversión descargables para muchos ordenadores. En diciembre de 1987, por ejemplo, un usuario de Apple IIGS podía ver imágenes creadas en un Atari ST o un Commodore 64. [ 4 ] GIF fue uno de los dos primeros formatos de imagen comúnmente utilizados en sitios web, siendo el otro el formato en blanco y negro XBM . [ 5 ]

En septiembre de 1995, Netscape Navigator 2.0 añadió la capacidad de reproducir en bucle los GIF animados .

Si bien GIF fue desarrollado por CompuServe , utilizaba el algoritmo de compresión de datos sin pérdidas Lempel-Ziv-Welch (LZW), patentado por Unisys en 1985. La controversia surgida en 1994 sobre el acuerdo de licencia entre Unisys y CompuServe impulsó el desarrollo del estándar Portable Network Graphics (PNG). En 2004, todas las patentes relacionadas con la compresión propietaria utilizada para GIF expiraron.

La función de almacenar varias imágenes en un solo archivo, junto con los datos de control, se utiliza ampliamente en la web para producir animaciones sencillas .

La función de entrelazado opcional , que almacena las líneas de escaneo de la imagen fuera de orden de tal manera que incluso una imagen parcialmente descargada era algo reconocible, también ayudó a la popularidad de GIF, [ 6 ] ya que un usuario podía abortar la descarga si no era lo que necesitaba.

En mayo de 2015, Facebook agregó soporte para GIF. [ 7 ] [ 8 ] En 2014, Twitter también agregó soporte para GIF, al igual que Instagram en 2018. [ 9 ]

En 2016, Internet Archive publicó una biblioteca de GIF con capacidad de búsqueda de su archivo GeoCities . [ 10 ] [ 11 ]

Terminología

Como sustantivo , la palabra GIF se encuentra en las ediciones más recientes de muchos diccionarios. En 2012, la sección estadounidense de Oxford University Press reconoció GIF también como verbo , con el significado de "crear un archivo GIF", como en "Crear GIF fue el medio perfecto para compartir escenas de los Juegos Olímpicos de Verano ". Los lexicógrafos de la editorial la eligieron como palabra del año , afirmando que los GIF han evolucionado hasta convertirse en "una herramienta con aplicaciones importantes, incluyendo la investigación y el periodismo". [ 12 ] [ 13 ]

Pronunciación

Una infografía humorística que anuncia el lanzamiento en 2013 de una cuenta de Tumblr para la Casa Blanca sugiere pronunciar GIF con una g fuerte .

La pronunciación de la primera letra de GIF ha sido objeto de controversia desde la década de 1990. Las pronunciaciones más comunes en inglés son / ɪ f /.( con unagsuavecomo engin) y / ɡɪf / (con unagfuertecomo engift), que difiere en elfonemarepresentado por la letraG.Los creadores del formato pronunciaban el acrónimo GIF como/ dʒɪf / , con una gsuave, y Wilhite afirmó que pretendía que la pronunciación imitara deliberadamente lamarcade mantequilla de cacahueteJif, yde CompuServesolían bromear diciendo "los desarrolladores exigentes eligen GIF", una parodia de los anuncios televisivos de Jif. [ 14 ] Sin embargo, la palabra se pronuncia ampliamente como / ɡɪf / , con unagfuerte, [ 15 ] y las encuestas generalmente han demostrado que esta pronunciación con g fuerte es másfrecuente. [ 16 ] [ 17 ]

Dictionary.com [ 18 ] cita ambas pronunciaciones, indicando / ɪ f / como la pronunciación principal, mientras que Cambridge Dictionary of American English [ 19 ] ofrece solo la pronunciación con g fuerte . Merriam-Webster's Collegiate Dictionary [ 20 ] y Oxford Dictionaries citan ambas pronunciaciones, pero colocan la g fuerte primero: / ɡ ɪ f , ɪ f / . [ 21 ] [ 22 ] [ 23 ] [ 24 ] The New Oxford American Dictionary solo dio / ɪ f / en su segunda edición [ 25 ] pero la actualizó a / ɪ f , ɡ ɪ f / en la tercera edición. [ 26 ]

El desacuerdo sobre la pronunciación ha dado lugar a un acalorado debate en Internet. Con motivo de recibir un premio a la trayectoria en la ceremonia de los Webby Awards de 2013 , Wilhite rechazó públicamente la pronunciación con g fuerte ; [ 15 ] [ 27 ] [ 28 ] su discurso generó más de 17.000 publicaciones en Twitter y decenas de artículos de noticias. [ 29 ] La Casa Blanca [ 15 ] y el programa de televisión Jeopardy! también entraron en el debate en 2013. [ 28 ] En febrero de 2020, The JM Smucker Company , propietaria de la marca Jif, se asoció con la base de datos de imágenes animadas y el motor de búsqueda Giphy para lanzar un frasco de mantequilla de cacahuete de edición limitada "Jif vs. GIF" ( con el hashtag #JIFvsGIF) que tenía una etiqueta que declaraba humorísticamente que la pronunciación con g suave se refería exclusivamente a la mantequilla de cacahuete, y que GIF debía pronunciarse exclusivamente con la pronunciación con g fuerte . [ 30 ]

Uso

Los GIF son adecuados para dibujos lineales de bordes definidos con un número limitado de colores, como los logotipos. Esto aprovecha la compresión sin pérdidas del formato, que favorece las áreas planas de color uniforme con bordes bien definidos. [ 31 ] También se pueden usar para almacenar datos de sprites de bajo color para juegos. [ 32 ] Los GIF se pueden usar para pequeñas animaciones y videoclips de baja resolución, o como reacciones en mensajes en línea para transmitir emociones y sentimientos en imágenes en movimiento. Son populares en plataformas de redes sociales como Tumblr , [ 33 ] Facebook y X (anteriormente conocido como Twitter). [ 34 ]

Formato de archivo

Conceptualmente, un archivo GIF describe un área gráfica de tamaño fijo (la "pantalla lógica") con cero o más "imágenes". Muchos archivos GIF tienen una sola imagen que ocupa toda la pantalla lógica. Otros dividen la pantalla lógica en subimágenes separadas. Las imágenes también pueden funcionar como fotogramas de animación en un archivo GIF animado, pero, de nuevo, no es necesario que ocupen toda la pantalla lógica.

Los archivos GIF comienzan con un encabezado de longitud fija ("GIF87a" o "GIF89a") que indica la versión, seguido de un descriptor de pantalla lógica de longitud fija que especifica las dimensiones en píxeles y otras características de la pantalla lógica. El descriptor de pantalla también puede especificar la presencia y el tamaño de una tabla de colores global (GCT), que aparece a continuación si está presente.

Posteriormente, el archivo se divide en segmentos de los siguientes tipos, cada uno introducido por un centinela de 1 byte:

  • Una imagen (introducida por 0x2C, una coma ASCII ',')
  • Un bloque de extensión (introducido por 0x21, un signo de exclamación ASCII '!')
  • El tráiler (un solo byte con valor 0x3B, un punto y coma ASCII ';'), que debería ser el último byte del archivo.

Una imagen comienza con un descriptor de imagen de longitud fija, que puede especificar la presencia y el tamaño de una tabla de color local (que aparece a continuación si está presente). A continuación, se presentan los datos de la imagen: un byte que indica el ancho en bits de los símbolos sin codificar (que debe tener al menos 2 bits de ancho, incluso para imágenes bicolor), seguido de una serie de subbloques que contienen los datos codificados en LZW.

Los bloques de extensión (bloques que "extienden" la definición 87a mediante un mecanismo ya definido en la especificación 87a) constan del elemento centinela, un byte adicional que especifica el tipo de extensión y una serie de subbloques con los datos de la extensión. Los bloques de extensión que modifican una imagen (como la Extensión de Control Gráfico que especifica el tiempo de retardo de animación opcional y el color de fondo transparente opcional) deben preceder inmediatamente al segmento con la imagen a la que hacen referencia.

Cada subbloque comienza con un byte que indica el número de bytes de datos subsiguientes en el subbloque (de 1 a 255). La serie de subbloques finaliza con un subbloque vacío (un byte 0).

Esta estructura permite analizar el archivo aunque no se comprendan todas sus partes. Un GIF marcado como 87a puede contener bloques de extensión; la intención es que un decodificador pueda leer y mostrar el archivo sin las características que abarcan las extensiones que no comprende.

Los detalles completos del formato de archivo se tratan en la especificación GIF. [ 2 ]

Paletas

Un ejemplo de una imagen GIF guardada con una paleta segura para la web y con tramado mediante el método Floyd-Steinberg ; como consecuencia de la relativamente poca cantidad de colores permitidos en dicha imagen, el contraste y la viveza de los colores son notablemente deficientes.

GIF se basa en paletas: los colores utilizados en una imagen (un fotograma) del archivo tienen sus valores RGB definidos en una tabla de paleta que puede contener hasta 256 entradas, y los datos de la imagen hacen referencia a los colores mediante sus índices (0-255) en la tabla de paleta. Las definiciones de color en la paleta pueden provenir de un espacio de color de millones de tonos (2²⁴ tonos , 8 bits para cada primario), pero el número máximo de colores que puede usar un fotograma es 256. Esta limitación era razonable cuando se desarrolló GIF, ya que el hardware que podía mostrar más de 256 colores simultáneamente era poco común. Los gráficos simples, los dibujos lineales, las caricaturas y las fotografías en escala de grises generalmente requieren menos de 256 colores.

Cada fotograma puede designar un índice como "color de fondo transparente": cualquier píxel al que se le asigne este índice adopta el color del píxel que se encuentra en la misma posición del fondo, que puede haber sido determinado por un fotograma de animación anterior.

Se han desarrollado numerosas técnicas, denominadas colectivamente tramado , para aproximar una gama más amplia de colores con una paleta reducida, utilizando píxeles de dos o más colores para representar los tonos intermedios. Estas técnicas sacrifican la resolución espacial para lograr una mayor resolución cromática. Si bien no forma parte de la especificación GIF, el tramado puede utilizarse en imágenes que posteriormente se codifican como GIF. Sin embargo, esta no suele ser la solución ideal para las imágenes GIF, ya que la pérdida de resolución espacial generalmente provoca que la imagen se vea borrosa en la pantalla y los patrones de tramado suelen interferir con la compresibilidad de los datos de la imagen, lo que contradice el propósito principal de GIF.

En los inicios de los navegadores web gráficos (1981-1987, véase Unidad de Procesamiento Gráfico ), las tarjetas gráficas con búferes de 8 bits (que permitían solo 256 colores) eran comunes, y era bastante habitual crear imágenes GIF utilizando la paleta segura para la web . Esto garantizaba una visualización predecible, pero limitaba considerablemente la elección de colores. Cuando el color de 24 bits se convirtió en la norma, las paletas pudieron rellenarse con los colores óptimos para cada imagen.

Una tabla de colores pequeña puede ser suficiente para imágenes pequeñas, y mantenerla pequeña permite una descarga más rápida. Las especificaciones 87a y 89a permiten tablas de colores de 2n colores para cualquier n entre 1 y 8. La mayoría de las aplicaciones gráficas leen y muestran imágenes GIF con cualquiera de estos tamaños de tabla; sin embargo, algunas no admiten todos los tamaños al crear imágenes. Las tablas de 2, 16 y 256 colores son ampliamente compatibles.

Color verdadero

Aunque GIF casi nunca se usa para imágenes en color verdadero , es posible hacerlo. [ 35 ] [ 36 ] Una imagen GIF puede incluir múltiples bloques de imagen, cada uno con su propia paleta de 256 colores, y estos bloques se pueden combinar para crear una imagen completa. Como alternativa, la especificación GIF89a introdujo el concepto de color "transparente", donde cada bloque de imagen puede incluir su propia paleta de 255 colores visibles más un color transparente. Se puede crear una imagen completa superponiendo bloques de imagen, de modo que la parte visible de cada capa se muestre a través de las partes transparentes de las capas superiores.

Un GIF animado que ilustra una técnica para mostrar más del límite típico de 256 colores.

Para renderizar una imagen a todo color como un GIF, la imagen original debe dividirse en regiones más pequeñas con no más de 255 o 256 colores diferentes. Cada una de estas regiones se almacena como un bloque de imagen independiente con su propia paleta local, y cuando los bloques de imagen se muestran juntos (ya sea mediante mosaicos o superponiendo bloques de imagen parcialmente transparentes), aparece la imagen completa a todo color. Por ejemplo, dividir una imagen en mosaicos de 16 por 16 píxeles (256 píxeles en total) garantiza que ningún mosaico tenga más del límite de la paleta local de 256 colores, aunque se pueden usar mosaicos más grandes y fusionar colores similares, lo que resulta en cierta pérdida de información de color. [ 35 ]

Dado que cada bloque de imagen puede tener su propia tabla de colores local, un archivo GIF con muchos bloques de imagen puede ser muy grande, lo que limita la utilidad de los GIF a todo color. [ 36 ] Además, no todos los programas de renderizado de GIF manejan correctamente las imágenes en mosaico o en capas. Muchos programas de renderizado interpretan los mosaicos o capas como fotogramas de animación y los muestran en secuencia como una animación [ 35 ] con la mayoría de los navegadores web mostrando automáticamente los fotogramas con un tiempo de retardo de 0,1 segundos o más. [ 37 ] [ 38 ]

Archivo GIF de ejemplo

Los números hexadecimales de las siguientes tablas están en orden de bytes little-endian , tal como lo prescribe la especificación del formato.

Codificación de imágenes

Los datos de píxeles de la imagen, escaneados horizontalmente desde la esquina superior izquierda, se convierten mediante codificación LZW a códigos que luego se asignan a bytes para su almacenamiento en el archivo. Los códigos de píxeles generalmente no coinciden con el tamaño de 8 bits de los bytes, por lo que se empaquetan en bytes mediante un esquema "little-endian": el bit menos significativo del primer código se almacena en el bit menos significativo del primer byte, los bits de orden superior del código en los bits de orden superior del byte, extendiéndose a los bits de orden inferior del siguiente byte según sea necesario. Cada código subsiguiente se almacena comenzando por el bit menos significativo que aún no se haya utilizado.

Esta secuencia de bytes se almacena en el archivo como una serie de "subbloques". Cada subbloque tiene una longitud máxima de 255 bytes y está precedido por un byte que indica la cantidad de bytes de datos que contiene. La serie de subbloques finaliza con un subbloque vacío (un único byte 0, que indica un subbloque sin datos).

Para la imagen de ejemplo anterior, a continuación se muestra la correspondencia reversible entre códigos de 9 bits y bytes.

Se observa una ligera compresión: los colores de píxel definidos inicialmente por 15 bytes se representan exactamente con 12 bytes de código, incluidos los códigos de control. El proceso de codificación que genera los códigos de 9 bits se muestra a continuación. Una cadena local acumula los números de color de píxel de la paleta, sin ninguna acción de salida, siempre que la cadena local se encuentre en una tabla de códigos. Se aplica un tratamiento especial a los dos primeros píxeles que llegan antes de que la tabla aumente su tamaño inicial mediante la adición de cadenas. Después de cada código de salida, la cadena local se inicializa con el último color de píxel (que no se pudo incluir en el código de salida).

Tabla Cadena de 9 bits --> código Código Acción #0 | 000h Inicializar la tabla raíz de códigos de 9 bits paleta | : colores | : #255 | 0FFh clr | 100h fin | 101h | 100h Clear Pixel Local | Cadena de paleta de colores | NEGRO #40 28 | 028h El primer píxel siempre se imprime. BLANCO #255 FF | Cadena encontrada en la tabla 28 FF | 102h Siempre agregue la primera cadena a la tabla FF | Inicializar cadena local BLANCO #255 FF FF | Cadena no encontrada en la tabla | 0FFh - código de salida para la cadena anterior FF FF | 103h - agregar la última cadena a la tabla FF | - inicializar cadena local BLANCO #255 FF FF | Cadena encontrada en la tabla NEGRO #40 FF FF 28 | Cadena no encontrada en la tabla | 103h - código de salida para la cadena anterior FF FF 28 | 104h - agregar la última cadena a la tabla 28 | - inicializar cadena local BLANCO #255 28 FF | Cadena encontrada en la tabla BLANCO #255 28 FF FF | Cadena no encontrada en la tabla | 102h - código de salida para la cadena anterior 28 FF FF | 105h - agregar la última cadena a la tabla FF | - inicializar cadena local BLANCO #255 FF FF | Cadena encontrada en la tabla BLANCO #255 FF FF FF | Cadena no encontrada en la tabla | 103h - código de salida para la cadena anterior FF FF FF | 106h - agregar la última cadena a la tabla FF | - inicializar cadena local BLANCO #255 FF FF | Cadena encontrada en la tabla BLANCO #255 FF FF FF | Cadena encontrada en la tabla BLANCO #255 FF FF FF FF | Cadena no encontrada en la tabla | 106h - código de salida para la cadena anterior FF FF FF FF| 107h - agregar la última cadena a la tabla FF | - inicializar cadena local BLANCO #255 FF FF | Cadena encontrada en la tabla BLANCO #255 FF FF FF | Cadena encontrada en la tabla BLANCO #255 FF FF FF FF | Cadena encontrada en la tabla No más píxeles 107h - código de salida para la última cadena 101h Fin

Para mayor claridad, la tabla mostrada arriba está compuesta por cadenas de longitud creciente. Este esquema puede funcionar, pero la tabla consume una cantidad impredecible de memoria. En la práctica, se puede ahorrar memoria teniendo en cuenta que cada nueva cadena que se almacena consiste en una cadena previamente almacenada a la que se le añade un carácter. Resulta económico almacenar en cada dirección solo dos palabras: una dirección existente y un carácter.

El algoritmo LZW requiere una búsqueda en la tabla para cada píxel. Una búsqueda lineal a través de hasta 4096 direcciones ralentizaría la codificación. En la práctica, los códigos se pueden almacenar en orden de valor numérico; esto permite que cada búsqueda se realice mediante un SAR (Registro de Aproximación Sucesiva, como el que se usa en algunos convertidores analógico-digitales ), con solo 12 comparaciones de magnitud. Para lograr esta eficiencia, se necesita una tabla adicional para convertir entre códigos y direcciones de memoria reales; el mantenimiento de esta tabla adicional solo es necesario cuando se almacena un nuevo código, lo que ocurre a una velocidad mucho menor que la de los píxeles.

Decodificación de imágenes

La decodificación comienza mapeando los bytes almacenados a códigos de 9 bits. Estos se decodifican para recuperar los colores de los píxeles, como se muestra a continuación. Se construye una tabla idéntica a la utilizada en el codificador agregando cadenas según esta regla:

desplazamiento de 9 bits ----> Tabla local Código de píxel Código Código --> Cadena Color de paleta Acción 100h 000h | #0 Inicializar la tabla raíz de códigos de 9 bits : | paleta : | colores 0FFh | #255 100h | clr 101h | fin 028h | #40 NEGRO Decodificar 1er píxel 0FFh 028h | Código entrante encontrado en la tabla | #255 BLANCO - cadena de salida de la tabla 102h | 28 FF - añadir a la tabla 103h 0FFh | Código entrante no encontrado en la tabla 103h | FF FF - añadir a la tabla | - cadena de salida de la tabla | #255 BLANCO | #255 BLANCO 102h 103h | Código entrante encontrado en la tabla | - cadena de salida de la tabla | #40 NEGRO | #255 BLANCO 104h | FF FF 28 - añadir a la tabla 103h 102h | Código entrante encontrado en la tabla | - cadena de salida de la tabla | #255 BLANCO | #255 BLANCO 105h | 28 FF FF - añadir a la tabla 106h 103h | Código entrante no encontrado en la tabla 106h | FF FF FF - añadir a la tabla | - cadena de salida de la tabla | #255 BLANCO | #255 BLANCO | #255 BLANCO 107h 106h | Código entrante no encontrado en la tabla 107h | FF FF FF FF - añadir a la tabla | - cadena de salida de la tabla | #255 BLANCO | #255 BLANCO | #255 BLANCO | #255 BLANCO 101h | Fin

longitudes de código LZW

Se pueden usar longitudes de código más cortas para paletas más pequeñas que los 256 colores del ejemplo. Si la paleta tiene solo 64 colores (por lo que los índices de color son de 6 bits), los símbolos pueden ir de 0 a 63, y el ancho del símbolo puede ser de 6 bits, con códigos que comienzan en 7 bits. De hecho, el ancho del símbolo no tiene por qué coincidir con el tamaño de la paleta: siempre que los valores decodificados sean menores que el número de colores en la paleta, los símbolos pueden tener cualquier ancho de 2 a 8, y el tamaño de la paleta cualquier potencia de 2 de 2 a 256. Por ejemplo, si solo se usan los primeros cuatro colores (valores de 0 a 3) de la paleta, los símbolos pueden ser de 2 bits con códigos que comienzan en 3 bits.

Por el contrario, el ancho del símbolo podría establecerse en 8, incluso si solo se utilizan los valores 0 y 1; estos datos solo requerirían una tabla de dos colores. Si bien no tendría sentido codificar el archivo de esa manera, algo similar suele ocurrir con las imágenes bicolores: el ancho mínimo del símbolo es 2, incluso si solo se utilizan los valores 0 y 1.

La tabla de códigos inicialmente contiene códigos un bit más largos que el tamaño del símbolo para dar cabida a los códigos especiales clr y end , así como a los códigos de las cadenas que se añaden durante el proceso. Cuando la tabla está llena, la longitud del código aumenta para dar cabida a más cadenas, hasta un máximo de 4095 = FFF (hexadecimal). A medida que el decodificador construye su tabla, registra estos aumentos en la longitud del código y puede desempaquetar los bytes entrantes en consecuencia.

GIF sin comprimir

El proceso de codificación GIF se puede modificar para crear un archivo sin compresión LZW que aún se pueda visualizar como una imagen GIF. Esta técnica se introdujo originalmente para evitar la infracción de patentes. El GIF sin comprimir también puede ser un formato intermedio útil para un programador gráfico, ya que los píxeles individuales son accesibles para su lectura o edición. Un archivo GIF sin comprimir se puede convertir a un archivo GIF estándar simplemente procesándolo con un editor de imágenes.

El método de codificación modificado ignora la creación de la tabla LZW y emite únicamente los códigos de la paleta raíz y los códigos para CLEAR y STOP. Esto resulta en una codificación más simple (una correspondencia uno a uno entre los valores de los códigos y los códigos de la paleta), pero sacrifica toda la compresión: cada píxel de la imagen genera un código de salida que indica su índice de color. Al procesar un GIF sin comprimir, un decodificador GIF estándar no tendrá impedimentos para escribir cadenas en su tabla de diccionario, pero el ancho del código nunca debe aumentar, ya que esto activa una distribución diferente de bits a bytes.

Si el ancho del símbolo es n , los códigos de ancho n + 1 se dividen naturalmente en dos bloques: el bloque inferior de 2 n códigos para codificar símbolos individuales y el bloque superior de 2 n códigos que el decodificador utilizará para secuencias de longitud mayor que uno. De ese bloque superior, los dos primeros códigos ya están ocupados: 2 n para CLEAR y 2 n + 1 para STOP. También se debe impedir que el decodificador utilice el último código del bloque superior, 2 n + 1 − 1 , porque cuando el decodificador llena ese espacio, aumentará el ancho del código. Por lo tanto, en el bloque superior, k hay 2 n − 3 códigos disponibles para el decodificador que no provocarán un aumento en el ancho del código. Dado que el decodificador siempre va un paso por detrás en el mantenimiento de la tabla, no genera una entrada en la tabla al recibir el primer código del codificador, pero generará una para cada código subsiguiente. De este modo, el codificador puede generar 2n − 2 códigos sin aumentar el ancho del código. Por lo tanto, el codificador debe emitir códigos CLEAR adicionales a intervalos de 2n − 2 códigos o menos para que el decodificador reinicie el diccionario de codificación. El estándar GIF permite insertar dichos códigos CLEAR adicionales en los datos de la imagen en cualquier momento. El flujo de datos compuesto se divide en subbloques, cada uno con un tamaño de entre 1 y 255 bytes.

Para la imagen de muestra de 3×5 anterior, los siguientes códigos de 9 bits representan "borrar" (100) seguido de los píxeles de la imagen en orden de escaneo y "detener" (101).

100 028 0FF 0FF 0FF 028 0FF 0FF 0FF 0FF 0FF 0FF 0FF 0FF 0FF 0FF 101

Una vez que los códigos anteriores se asignan a bytes, el archivo sin comprimir difiere del archivo comprimido de la siguiente manera:

Ejemplo de compresión

El ejemplo sencillo de una imagen grande de color sólido demuestra la compresión LZW de longitud variable que se utiliza en los archivos GIF.

Los valores de código mostrados se empaquetan en bytes, que a su vez se agrupan en bloques de hasta 255 bytes. Un bloque de datos de imagen comienza con un byte que indica la cantidad de bytes que le siguen. El último bloque de datos de una imagen se marca con un byte de longitud cero.

Entrelazado

Captura de pantalla de un GIF entrelazado cargándose en un navegador web.

La especificación GIF permite que cada imagen dentro de la pantalla lógica de un archivo GIF especifique que está entrelazada; es decir, que el orden de las líneas de trama en su bloque de datos no es secuencial. Esto permite una visualización parcial de la imagen que puede reconocerse antes de que se muestre la imagen completa.

Una imagen entrelazada se divide de arriba abajo en franjas de 8 píxeles de altura, y las filas de la imagen se presentan en el siguiente orden:

  • Pase 1: Línea 0 (la línea superior) de cada tira.
  • Pasada 2: Línea 4 de cada tira.
  • Paso 3: Líneas 2 y 6 de cada tira.
  • Paso 4: Líneas 1, 3, 5 y 7 de cada tira.

Los píxeles dentro de cada línea no están entrelazados, sino que se presentan consecutivamente de izquierda a derecha. Al igual que en las imágenes no entrelazadas, no hay interrupción entre los datos de una línea y los de la siguiente. El indicador de que una imagen está entrelazada es un bit activado en el bloque Descriptor de Imagen correspondiente.

GIF animado

Los GIF se pueden utilizar para mostrar animaciones, como en esta imagen del péndulo de Newton .

Aunque GIF no fue diseñado como un medio de animación, su capacidad para almacenar múltiples imágenes en un solo archivo sugirió naturalmente el uso del formato para almacenar los fotogramas de una secuencia de animación. Para facilitar la visualización de animaciones, la especificación GIF89a agregó la Extensión de Control Gráfico (GCE), que permite pintar las imágenes (fotogramas) del archivo con retardos de tiempo, formando un videoclip . Cada fotograma en un GIF de animación se introduce mediante su propia GCE que especifica el retardo de tiempo que debe esperarse después de que se dibuje el fotograma. La información global al inicio del archivo se aplica por defecto a todos los fotogramas. Los datos están orientados al flujo, por lo que el desplazamiento del archivo del inicio de cada GCE depende de la longitud de los datos precedentes. Dentro de cada fotograma, los datos de imagen codificados en LZW se organizan en subbloques de hasta 255 bytes; el tamaño de cada subbloque se declara mediante el byte que lo precede.

Por defecto, una animación muestra la secuencia de fotogramas solo una vez, deteniéndose cuando se muestra el último fotograma. Para permitir que una animación se reproduzca en bucle, Netscape en la década de 1990 utilizó el bloque Application Extension (diseñado para permitir a los proveedores agregar información específica de la aplicación al archivo GIF) para implementar el Netscape Application Block (NAB). [ 39 ] Este bloque, ubicado inmediatamente antes de la secuencia de fotogramas de la animación, especifica la cantidad de veces que la secuencia de fotogramas debe reproducirse (de 1 a 65535 veces) o que debe repetirse continuamente (cero indica bucle infinito). La compatibilidad con estas animaciones repetitivas apareció por primera vez en Netscape Navigator versión 2.0 y luego se extendió a otros navegadores. [ 40 ] La mayoría de los navegadores ahora reconocen y admiten NAB, aunque no es estrictamente parte de la especificación GIF89a.

El siguiente ejemplo muestra la estructura del archivo de animación Rotating earth (large).gif que se muestra (como miniatura) en el cuadro de información del artículo.

El retardo de animación para cada fotograma se especifica en centésimas de segundo en el GCE. Es posible ahorrar datos cuando un fotograma solo necesita reescribir algunos píxeles en la pantalla, ya que el descriptor de imagen puede definir un rectángulo más pequeño para volver a escanear en lugar de la imagen completa. Los navegadores u otras pantallas que no admiten GIF animados generalmente solo muestran el primer fotograma.

El tamaño y la calidad del color de los archivos GIF animados pueden variar significativamente según la aplicación utilizada para crearlos. Las estrategias para minimizar el tamaño del archivo incluyen usar una tabla de colores global común para todos los fotogramas (en lugar de una tabla de colores local completa para cada fotograma) y minimizar la cantidad de píxeles cubiertos en fotogramas sucesivos (de modo que solo los píxeles que cambian de un fotograma al siguiente se incluyan en el último fotograma). Las técnicas más avanzadas implican modificar las secuencias de color para que coincidan mejor con el diccionario LZW existente, una forma de compresión con pérdida . Simplemente agrupar una serie de imágenes de fotogramas independientes en una animación compuesta tiende a generar archivos de gran tamaño. Existen herramientas disponibles para minimizar el tamaño de un archivo GIF existente.

Metadatos

Los metadatos pueden almacenarse en archivos GIF como un bloque de comentarios, un bloque de texto sin formato o un bloque de extensión de aplicación específico. Varios editores gráficos utilizan bloques de extensión de aplicación no oficiales para incluir los datos utilizados para generar la imagen, de modo que puedan recuperarse para su posterior edición.

Técnicamente, todos estos métodos requieren que los metadatos se dividan en subbloques para que las aplicaciones puedan navegar por el bloque de metadatos sin conocer su estructura interna.

El estándar de metadatos XMP ( Extensible Metadata Platform ) introdujo un bloque de extensión de aplicación no oficial, pero ahora muy extendido, llamado "Datos XMP", para incluir datos XMP en archivos GIF. [ 41 ] Dado que los datos XMP se codifican usando UTF-8 sin caracteres NUL, no hay bytes 0 en los datos. En lugar de dividir los datos en subbloques formales, el bloque de extensión termina con un "cola mágica" que dirige cualquier aplicación que trate los datos como subbloques a un byte 0 final que termina la cadena de subbloques.

Aplicación de patentes de Unisys y LZW

En 1977 y 1978, Jacob Ziv y Abraham Lempel publicaron dos artículos sobre una nueva clase de algoritmos de compresión de datos sin pérdidas, ahora conocidos colectivamente como LZ77 y LZ78 . En 1983, Terry Welch desarrolló una variante rápida de LZ78 que recibió el nombre de Lempel-Ziv-Welch (LZW). [ 42 ] [ 43 ]

Welch presentó una solicitud de patente para el método LZW en junio de 1983. La patente resultante, US4558302, [ 44 ] otorgada en diciembre de 1985, fue asignada a Sperry Corporation , que posteriormente se fusionó con Burroughs Corporation en 1986 y formó Unisys . [ 42 ] Se obtuvieron patentes adicionales en el Reino Unido, Francia, Alemania, Italia, Japón y Canadá.

Además de las patentes mencionadas anteriormente, la patente de Welch de 1983 también incluye citas de varias otras patentes que la influyeron, entre ellas:

  • dos patentes japonesas de 1980 de Jun Kanatsu de NEC , [ 45 ] [ 46 ]
  • Patente estadounidense 4,021,782 (1974) de John S. Hoerning,
  • Patente estadounidense 4,366,551 (1977) de Klaus E. Holtz, y
  • una patente alemana de 1981 de Karl Eckhart Heinz. [ 47 ] [ 48 ]

En junio de 1984, se publicó un artículo de Welch en la revista IEEE , que describía públicamente la técnica LZW por primera vez. [ 49 ] LZW se convirtió en una técnica popular de compresión de datos y, cuando se concedió la patente, Unisys firmó acuerdos de licencia con más de cien empresas. [ 42 ] [ 50 ]

La popularidad de LZW llevó a CompuServe a elegirla como técnica de compresión para su versión de GIF, desarrollada en 1987. En ese momento, CompuServe desconocía la patente. [ 42 ] Unisys se enteró de que la versión de GIF utilizaba la técnica de compresión LZW e inició negociaciones de licencia con CompuServe en enero de 1993. El acuerdo posterior se anunció el 24 de diciembre de 1994. [ 43 ] Unisys declaró que esperaba que todas las principales empresas comerciales de servicios de información en línea que emplearan la patente LZW obtuvieran una licencia de la tecnología de Unisys a un precio razonable, pero que no exigirían licencias ni el pago de tarifas para aplicaciones no comerciales y sin fines de lucro basadas en GIF, incluidas aquellas para su uso en los servicios en línea. [ 50 ]

Tras este anuncio, hubo una condena generalizada de CompuServe y Unisys, y muchos desarrolladores de software amenazaron con dejar de usar GIF. El formato PNG (véase más abajo) se desarrolló en 1995 como un reemplazo previsto. [ 42 ] [ 43 ] [ 49 ] Sin embargo, obtener el apoyo de los fabricantes de navegadores web y otro software para el formato PNG resultó difícil, y no fue posible reemplazar GIF, aunque PNG ha aumentado gradualmente en popularidad. [ 42 ] Por lo tanto, se desarrollaron variaciones de GIF sin compresión LZW. Por ejemplo, la biblioteca libungif, basada en giflib de Eric S. Raymond , permite la creación de GIF que siguen el formato de datos pero evitan las características de compresión, evitando así el uso de la patente LZW de Unisys. [ 51 ] Un artículo de Dr. Dobb's de 2001 describió una forma de lograr una codificación compatible con LZW para datos que se comprimirían bien bajo un mecanismo de codificación de longitud de ejecución sin infringir sus patentes. [ 52 ]

En agosto de 1999, Unisys cambió los detalles de su práctica de licencias, anunciando la opción para los propietarios de ciertos sitios web privados y no comerciales de obtener licencias mediante el pago de una tarifa única de licencia de $5000 o $7500. [ 53 ] Dichas licencias no eran necesarias para los propietarios de sitios web u otros usuarios de GIF que hubieran utilizado software con licencia para generar GIF. Sin embargo, Unisys fue objeto de miles de ataques en línea y correos electrónicos abusivos de usuarios que creían que se les cobrarían $5000 o serían demandados por usar GIF en sus sitios web. [ 54 ] A pesar de otorgar licencias gratuitas a cientos de organizaciones sin fines de lucro, escuelas y gobiernos, Unisys fue completamente incapaz de generar publicidad positiva y continuó siendo condenada por individuos y organizaciones como la Liga por la Libertad de Programación, que inició la campaña "Quemen todos los GIF" en 1999. [ 55 ] [ 56 ]

La patente estadounidense de LZW expiró el 20 de junio de 2003. [ 57 ] Las patentes equivalentes en el Reino Unido, Francia, Alemania e Italia expiraron el 18 de junio de 2004, las patentes japonesas expiraron el 20 de junio de 2004 y la patente canadiense expiró el 7 de julio de 2004. [ 57 ] En consecuencia, si bien Unisys tiene más patentes y solicitudes de patente relacionadas con mejoras a la técnica LZW, [ 57 ] LZW en sí (y por consiguiente GIF) han sido de libre uso desde julio de 2004. [ 58 ]

Alternativas

PNG

Portable Network Graphics (PNG) se diseñó como reemplazo de GIF para evitar la infracción de la patente de Unisys sobre la técnica de compresión LZW. [ 42 ] PNG ofrece mejor compresión y más funciones que GIF, [ 59 ] siendo la animación la única excepción significativa. PNG es más adecuado que GIF en casos donde se requieren imágenes en color verdadero y transparencia alfa .

Aunque la compatibilidad con el formato PNG llegó lentamente, los navegadores web más recientes lo admiten. Las versiones antiguas de Internet Explorer no admiten todas las funciones de PNG. Las versiones 6 y anteriores no admiten la transparencia del canal alfa sin usar extensiones HTML específicas de Microsoft. [ 60 ] La corrección gamma de las imágenes PNG no era compatible antes de la versión 8, y la visualización de estas imágenes en versiones anteriores puede tener un tono incorrecto. [ 61 ]

Para datos de imagen idénticos de 8 bits (o inferiores), los archivos PNG suelen ser más pequeños que los GIF equivalentes, debido a las técnicas de compresión más eficientes utilizadas en la codificación PNG. [ 62 ] La compatibilidad total con GIF se complica principalmente por la compleja estructura de lienzo que permite, aunque esto es lo que posibilita las funciones de animación compactas.

Formatos de animación

Los vídeos solucionan muchos de los problemas que presentan los GIF en su uso habitual en la web. Entre ellos, destacan la reducción drástica del tamaño de los archivos , la posibilidad de superar la limitación de color de 8 bits y una mejor gestión y compresión de fotogramas mediante codificación entre fotogramas . La compatibilidad prácticamente universal con el formato GIF en los navegadores web , junto con la falta de compatibilidad oficial con el vídeo en el estándar HTML , hicieron que el GIF ganara popularidad para la visualización de archivos cortos similares a vídeos en la web.

  • MNG ("Multiple-image Network Graphics") se desarrolló originalmente como una solución basada en PNG para animaciones. MNG alcanzó la versión 1.0 en 2001, pero pocas aplicaciones la admiten.
  • APNG ("Animated Portable Network Graphics") fue propuesto por Mozilla en 2006. APNG es una extensión del formato PNG como alternativa al formato MNG. La mayoría de los navegadores admiten APNG desde 2019. [ 63 ] APNG permite animar archivos PNG, manteniendo la compatibilidad con versiones anteriores en decodificadores que no pueden interpretar el fragmento de animación (a diferencia de MNG). Los decodificadores más antiguos simplemente renderizarán el primer fotograma de la animación.
El grupo PNG rechazó oficialmente a APNG como extensión oficial el 20 de abril de 2007. [ 64 ]
Ha habido varias propuestas posteriores para un formato de gráficos animados simple basado en PNG utilizando varios enfoques diferentes. [ 65 ] Sin embargo, APNG todavía está en desarrollo por Mozilla y es compatible con Firefox 3.0 [ 66 ] [ 67 ] mientras que la compatibilidad con MNG fue eliminada. [ 68 ] [ 69 ] APNG es actualmente compatible con todos los principales navegadores web, incluidos Chrome (desde la versión 59.0), Opera, Firefox y Edge.
Ejemplos notables son Gfycat e Imgur y su metaformato GIFV, que en realidad es una etiqueta de vídeo que reproduce un vídeo comprimido en bucle en formato MP4 o WebM . [ 72 ]
En comparación con el formato GIF, que carece de compresión DCT, HEIF permite una compresión significativamente más eficiente. HEIF almacena más información y produce imágenes animadas de mayor calidad con un tamaño mucho menor que el de un GIF equivalente. [ 74 ]

Usos

En abril de 2014, 4chan agregó soporte para videos WebM silenciosos de menos de 3 MB y 2 minutos de duración, [ 76 ] [ 77 ] y en octubre de 2014, Imgur comenzó a convertir cualquier archivo GIF subido al sitio a video H.264 y a darle al enlace del reproductor HTML la apariencia de un archivo real con una .gifvextensión. [ 78 ] [ 79 ]

En enero de 2016, Telegram comenzó a recodificar todos los GIF a videos MPEG-4 que "requieren hasta un 95 % menos de espacio en disco para la misma calidad de imagen". [ 80 ]

Véase también

Referencias

  1. 1 2 3 "Formato de intercambio de gráficos, versión 87a" . W3C . 15 de junio de 1987. Archivado del original el 22 de diciembre de 2018. Recuperado el 13 de octubre de 2012 .
  2. 1 2 3 "Formato de intercambio de gráficos, versión 89a" . W3C . 31 de julio de 1990. Archivado del original el 22 de diciembre de 2018. Recuperado el 6 de marzo de 2009 .
  3. Tiffany, Kaitlyn (7 de octubre de 2022). "El GIF está en su lecho de muerte" . The Atlantic . Recuperado el 21 de octubre de 2023 .
  4. "Arte en línea" . Aplicaciones de Apple de Compute!. Diciembre de 1987. pág. 10. Consultado el 14 de septiembre de 2016 . 
  5. Holdener III, Anthony (2008). Ajax: La guía definitiva: Aplicaciones interactivas para la web . O'Reilly Media. ISBN 978-0596528386.
  6. Furht, Borko (2008). Enciclopedia de Multimedia . Saltador. ISBN 978-0387747248.
  7. McHugh, Molly (29 de mayo de 2015). "Por fin, de verdad, puedes publicar GIFs en Facebook" . Wired . Archivado del original el 30 de mayo de 2015. Consultado el 29 de mayo de 2015 .
  8. Pérez, Sarah (29 de mayo de 2015). "Facebook confirma que admitirá oficialmente los GIF" . TechCrunch . Archivado del original el 30 de mayo de 2015. Recuperado el 29 de mayo de 2015 .
  9. "Presentamos los stickers GIF" . Instagram . 23 de enero de 2018. Archivado del original el 12 de diciembre de 2019. Consultado el 19 de septiembre de 2019 .
  10. Ghoshal, Abhimanyu (28 de octubre de 2016). "Disfruta de 1,6 millones de GIF gloriosamente clásicos de la era GeoCities" . TNW | Shareables . Consultado el 4 de noviembre de 2024 .
  11. "GifCities" . gifcities.org . Consultado el 4 de noviembre de 2024 .
  12. "Oxford Dictionaries USA Palabra del Año 2012" . Blog OxfordWords . Oxford American Dictionaries. 13 de noviembre de 2012. Archivado del original el 3 de agosto de 2014. Consultado el 1 de mayo de 2013 .
  13. Flood, Alison (27 de abril de 2013). "¿ GIF es la palabra del año en Estados Unidos? Eso sí que es un desastre total" . Blog de libros. The Guardian . Londres. Archivado del original el 1 de diciembre de 2016. Recuperado el 1 de mayo de 2013 .
  14. Olsen, Steve. "La página de pronunciación de GIF" . Archivado del original el 25 de febrero de 2009. Recuperado el 6 de marzo de 2009 .
  15. 1 2 3 "El inventor de GIF dice que ignores los diccionarios y digas 'Jif'"BBC News . 22 de mayo de 2013. Archivado del original el 27 de junio de 2018. Consultado el 22 de mayo de 2013 .
  16. Buck, Stephanie (21 de octubre de 2014). "El 70 por ciento de las personas en todo el mundo pronuncian GIF con una g fuerte " . Mashable . Archivado del original el 23 de diciembre de 2021. Recuperado el 24 de diciembre de 2021 .
  17. van der Meulen, Marten (22 de mayo de 2019). "Obama, ¿buceo o regalo?: Autoridad y argumentación en el debate en línea sobre la pronunciación de GIF " . English Today . 36 (1): 45–50 . Archivado del original el 24 de mayo de 2022. Recuperado el 22 de mayo de 2022 .
  18. "GIF" . Diccionario de abreviaturas de American Heritage, tercera edición . Houghton Mifflin Company. 2005. Archivado del original el 3 de septiembre de 2011. Consultado el 15 de abril de 2007 .
  19. "GIF" . The Cambridge Dictionary of American English . Cambridge University Press. Archivado del original el 27 de febrero de 2014. Consultado el 19 de febrero de 2014 .
  20. "Gif - Definición del Diccionario Merriam-Webster" . Diccionario Merriam-Webster . Merriam-Webster, Incorporated. Archivado del original el 22 de octubre de 2013. Consultado el 6 de junio de 2013 .
  21. "GIF" . Oxford Dictionaries Online . Oxford University Press. Archivado del original el 12 de octubre de 2014. Consultado el 7 de octubre de 2014 .
  22. "gif sustantivo - Definición, imágenes, pronunciación y notas de uso | Oxford Advanced Learner's Dictionary" . Oxford Learner's Dictionaries . Archivado del original el 24 de noviembre de 2020. Consultado el 6 de febrero de 2021 .
  23. "GIF | Definición de GIF según el Diccionario Oxford" . Lexico . Archivado del original el 13 de febrero de 2021. Consultado el 6 de febrero de 2021 .
  24. Stevenson, Angus, ed. (2010). Oxford Dictionary of English (3.ª ed.). Oxford University Press. ISBN  9780199571123OCLC 729551189 
  25. El Nuevo Diccionario Americano de Oxford (2.ª ed.). Oxford University Press. 2005. pág. 711.  
  26. El Nuevo Diccionario Oxford de Inglés Americano (3.ª ed.). 2012. (parte de los diccionarios integrados de Macintosh).
  27. O'Leary, Amy (21 de mayo de 2013). "Un honor para el creador del GIF" . The New York Times . Archivado del original el 22 de mayo de 2013. Recuperado el 22 de mayo de 2013 .
  28. 1 2 Rothberg, Daniel (4 de diciembre de 2013). "'Jeopardy' se adentra en la batalla de la pronunciación de 'GIF' . Los Angeles Times . Archivado del original el 6 de diciembre de 2013. Consultado el 4 de diciembre de 2013 .
  29. O'Leary, Amy (23 de mayo de 2013). "Estalla la batalla por la pronunciación de 'GIF'" . The New York Times . Archivado del original el 16 de diciembre de 2013. Consultado el 5 de diciembre de 2013 .
  30. Valinsky, Jordan (25 de febrero de 2020). "Jif zanja el gran debate con un tarro de mantequilla de cacahuete en formato GIF" . CNN . Archivado del original el 25 de febrero de 2020. Consultado el 25 de febrero de 2020 .
  31. Marur, DR; Bhaskar, V. (marzo de 2012). "Conferencia Internacional de Dispositivos, Circuitos y Sistemas (ICDCS) de 2012" . Dispositivos, Circuitos y Sistemas (ICDCS) . Conferencia Internacional de Dispositivos, Circuitos y Sistemas (ICDCS) . Universidad Karunya; Coimbatore, India: IEEE. págs. 297–301 . doi : 10.1109/ICDCSyst.2012.6188724 . ISBN  9781457715457Archivado del original el 2 de julio de 2017. Consultado el 11 de marzo de 2015 .
  32. S. Chin; D. Iverson; O. Campesato; P. Trani (2011). Flash profesional de Android (PDF) . Nueva York: Apress. pag. 350.ISBN  9781430232315. Archivado (PDF) del original el 2 de abril de 2015. Recuperado el 11 de marzo de 2015 .
  33. Bakhshi, Saeideh; Shamma, David A.; Kennedy, Lyndon; Song, Yale; de ​​Juan, Paloma; Kaye, Joseph "Jofish" (7 de mayo de 2016). "Rápido, barato y bueno: por qué los GIF animados nos atraen" . Actas de la Conferencia CHI 2016 sobre Factores Humanos en Sistemas Informáticos . págs. 575–586 . doi : 10.1145/2858036.2858532 . ISBN  9781450333627. S2CID 7417853 . Consultado el 17 de agosto de 2022 . 
  34. Highfield, Tim; Leaver, Tama (2016). "Instagrammática y métodos digitales: estudio de las redes sociales visuales, desde selfies y GIF hasta memes y emojis" . Communication Research and Practice . 2 (1): 47– 62. doi : 10.1080/22041451.2016.1155332 . hdl : 20.500.11937/36939 . S2CID 148538216. Recuperado el 17 de agosto de 2022 . 
  35. 1 2 3 Andreas Kleinert (2007). "Extensiones GIF de 24 bits (color verdadero)" . Archivado del original el 16 de marzo de 2012. Recuperado el 23 de marzo de 2012 .
  36. 1 2 Philip Howard. "Ejemplo de GIF en color real" . Archivado del original el 22 de febrero de 2015. Recuperado el 23 de marzo de 2012 .
  37. "Nullsleep - Jeremiah Johnson - Estudio de compatibilidad del navegador con el retardo mínimo de fotogramas de los GIF animados" . Archivado del original el 10 de octubre de 2014. Consultado el 26 de mayo de 2015 .
  38. ↑ " ¡ Son diferentes! Cómo igualar la velocidad de animación de los archivos gif en diferentes navegadores " . Blog del desarrollador . 14 de febrero de 2012. Archivado del original el 1 de febrero de 2017. Consultado el 15 de junio de 2017 .
  39. Royal Frazier. "Todo sobre GIF89a" . Archivado del original el 18 de abril de 1999. Consultado el 7 de enero de 2013 .
  40. Scott Walter (1996). Web Scripting Secret Weapons . Que Publishing . ISBN 0-7897-0947-3.
  41. "Especificación XMP Parte 3: Almacenamiento en archivos" (PDF) . Adobe. 2016. págs. 11–12 . Archivado (PDF) del original el 25 de febrero de 2018. Recuperado el 16 de agosto de 2018 . 
  42. 1 2 3 4 5 6 7 Greg Roelofs. "Historia del formato Portable Network Graphics (PNG)" . Archivado del original el 7 de marzo de 2012. Recuperado el 23 de marzo de 2012 .
  43. 1 2 3 Stuart Caie. "Día triste... la patente del GIF muere a los 20 años" . Archivado del original el 10 de febrero de 2012. Recuperado el 23 de marzo de 2012 .
  44. US 4558302 , Welch, Terry A. , publicado el 10 de diciembre de 1985, asignado a Sperry Corp. 
  45. ↑ Patente japonesa S5719857A , Kanatsu, Jiyun, "Dispositivo de almacenamiento de compresión de datos", publicada el 2 de febrero de 1982, asignada a NEC. 
  46. ↑ Patente japonesa S57101937A , Kanatsu, Jiyun, "Dispositivo de almacenamiento de datos", publicada el 24 de octubre de 1986, asignada a NEC. 
  47. DEpatent 3118676,Eckhart, Heinz Karl,"Verfahren zur Kompression redundanter Folgen serieller Datenelemente [Method for compressing redundant sequences of serial data elements]",published 2 December 1982 
  48. U.S. patent 4,558,302
  49. 12"The GIF Controversy: A Software Developer's Perspective". 27 January 1995. Archived from the original on 23 August 2016. Retrieved 26 May 2015.
  50. 12"Unisys Clarifies Policy Regarding Patent Use in On-Line Service Offerings". Archived from the original on 7 February 2007. – archived by League for Programming Freedom
  51. "Libungif". Archived from the original on 13 April 2015. Retrieved 26 May 2015.
  52. Cargill, Tom (1 October 2001). "Replacing a Dictionary with a Square Root". Dr. Dobb's Journal. Archived from the original on 28 June 2017. Retrieved 20 January 2017.
  53. "LZW Software and Patent Information". Archived from the original on 8 June 2009. Retrieved 31 January 2007. – clarification of 2 September 1999
  54. Unisys Not Suing (most) Webmasters for Using GIFsArchived 10 May 2017 at the Wayback MachineSlashdot investigation into the controversy
  55. "Burn All GIFs Day". Archived from the original on 13 October 1999.
  56. Burn All GIFsArchived 3 February 2007 at the Wayback Machine – A project of the League for Programming Freedom (latest version)
  57. 123"License Information on GIF and Other LZW-based Technologies". Archived from the original on 2 June 2009. Retrieved 26 April 2005.
  58. "Why There Are No GIF Files on GNU Web Pages". Free Software Foundation. Archived from the original on 19 May 2012. Retrieved 19 May 2012.
  59. "PNG versus GIF Compression". 31 March 2007. Archived from the original on 15 July 2009. Retrieved 8 June 2009.
  60. "Filtro AlphaImageLoader" . Microsoft. 4 de septiembre de 2012. Archivado del original el 3 de octubre de 2014. Consultado el 26 de mayo de 2015 .
  61. "Novedades de Internet Explorer 7" . MSDN . Archivado del original el 1 de marzo de 2009. Consultado el 6 de marzo de 2009 .
  62. "Formato de archivo de imagen PNG" . Archivado del original el 14 de junio de 2009. Consultado el 8 de junio de 2009 .
  63. "¿Puedo usar... Tablas de soporte para HTML5, CSS3, etc." . caniuse.com . Archivado del original el 19 de febrero de 2018 . Recuperado el 10 de abril de 2020 .
  64. "VOTACIÓN FALLIDA: APNG 20070405a" . Lista de correo de SourceForge . 20 de abril de 2007. Archivado del original el 13 de febrero de 2013. Consultado el 14 de julio de 2013 .
  65. "Discusión sobre un formato PNG simple "animado" . Archivado del original el 26 de febrero de 2009. Recuperado el 12 de julio de 2011 .
  66. "Especificación APNG" . Archivado del original el 5 de julio de 2010. Consultado el 26 de mayo de 2015 .
  67. "Mozilla Labs » Archivo del blog » Mejores animaciones en Firefox 3" . 13 de agosto de 2007. Archivado del original el 7 de marzo de 2016. Consultado el 3 de febrero de 2016 .  
  68. "195280 – Eliminación del apoyo a MNG/JNG" . Archivado del original el 25 de febrero de 2021. Recuperado el 26 de mayo de 2015 .
  69. "18574 – (mng) restaurar la compatibilidad con el formato de animación MNG y el formato de imagen JNG" . Archivado del original el 17 de marzo de 2021. Recuperado el 26 de mayo de 2015 .
  70. "Chromium Blog: Chrome 32 Beta: Imágenes WebP animadas y Chrome más rápido para la entrada táctil en Android" . Blog.chromium.org. 21 de noviembre de 2013. Archivado del original el 17 de julio de 2018. Consultado el 1 de febrero de 2014 .
  71. Calou, Juan. "SVG Animation - A Guide" . Toptal . Consultado el 15 de marzo de 2024 .
  72. "Presentando GIFV - Blog de Imgur" . imgur.com. 9 de octubre de 2014. Archivado del original el 14 de diciembre de 2014. Consultado el 14 de diciembre de 2014 .
  73. Thomson, Gavin; Shah, Athar (2017). "Introducción a HEIF y HEVC" (PDF) . Apple Inc. Archivado (PDF) del original el 19 de enero de 2020. Recuperado el 5 de agosto de 2019 .
  74. "Comparación HEIF - Formato de archivo de imagen de alta eficiencia" . Nokia Technologies . Archivado del original el 25 de julio de 2019. Consultado el 5 de agosto de 2019 .
  75. "#3271 (Permitir el uso de formatos de píxeles adicionales con libvpx-vp9) – FFmpeg" . trac.ffmpeg.org . Archivado del original el 16 de junio de 2020. Recuperado el 10 de abril de 2020 .
  76. Dewey, Caitlin. "Conoce la tecnología que podría dejar obsoletos los GIF" . The Washington Post . Archivado del original el 11 de mayo de 2015. Consultado el 4 de febrero de 2015 .
  77. "Soporte para WebM en 4chan" . Blog de 4chan . Consultado el 4 de febrero de 2015 .{{cite web}}: CS1 mantenimiento: estado de la URL ( enlace )
  78. "Presentando GIFV" . Imgur. 9 de agosto de 2014. Archivado del original el 5 de mayo de 2020. Recuperado el 21 de julio de 2016 .
  79. Allan, Patrick (9 de octubre de 2014). "Imgur renueva los GIF para mayor velocidad y calidad con GIFV" . Lifehacker . Archivado del original el 3 de febrero de 2015. Consultado el 4 de febrero de 2015 .
  80. "Revolución GIF" . Blog oficial de Telegram . 4 de enero de 2016. Archivado del original el 10 de enero de 2016. Consultado el 4 de enero de 2016 .
  • El proyecto GIFLIB
  • spec-gif89a.txt Especificación GIF 89a en w3.org
  • Especificación GIF 89a reformateada a HTML
  • LZW y GIF explicados
  • GIFs animados : un documental de seis minutos producido por Off Book (serie web).