how animation imagemagick gif imagemagick-convert interlacing

animation - how to add a gif html



La imagen GIF se distorsiona al entrelazarse (1)

las imágenes GIF entrelazadas se almacenan como 4 imágenes separadas

  1. que contiene cada octava línea de imagen (1/8 de tamaño)
  2. que contiene cada cuarta línea de imagen faltante (1/8 de tamaño)
  3. que contiene cada línea de imagen par faltante (1/4 de tamaño)
  4. que contiene cada línea impar de imagen (1/2 de tamaño)

Esto se hace para que la imagen se pueda ver mientras se carga a través de una conexión a Internet lenta ... aumentando los detalles con cada nuevo fragmento ...

Entonces, si su imagen se ve como 4 imágenes muy similares, entonces el resultado es correcto, usted simplemente lo decodificó incorrectamente o el GIF no configuró la bandera Entrelazada.

Si su archivo ya no contiene los cuadros de la animación, entonces no tiene suerte, pero si están allí y no renderizan, compruebe que el final del archivo GIF no esté fuera de lugar o revise las banderas, podrían estropearse ... ¿Ha intentado con algo diferente? Visor de GIF (algunos tienen errores)

[Editar1] después de decodificar tu GIF

Tienes GIF89a y te faltan banderas entrelazadas en cada cuadro. Entonces, la imagen está entrelazada correctamente pero el espectador piensa que no está entrelazada en absoluto ... Debe marcar el indicador entrelazado en cada encabezado de cuadro.

struct _img // this is image frame header { // Logical Image Descriptor BYTE Separator; /* Image Descriptor identifier 0x2C */ WORD x0; /* X position of image on the display */ WORD y0; /* Y position of image on the display */ WORD xs; /* Width of the image in pixels */ WORD ys; /* Height of the image in pixels */ BYTE Packed; /* Image and Color Table Data Information */ } img; img.Packed|=64; // this will set the interlaced flag

Para hacer eso necesitas decodificar / copiar en secuencia el GIF que no es tan fácil como suena.

ver:

  • ¿Cómo encontrar dónde comienza Image Block en imágenes GIF?
  • Descodificar bytes de datos de la secuencia de datos ráster GIF87a

Aquí el resultado de los fotogramas copiar + desentrelazar + codificación entrelazada (saltarse control / información / alimentaciones auxiliares ...)

Tengo algunas imágenes que se convirtieron utilizando Imagemagick y su operación entrelazada. Estas fueron las imágenes GIF animadas. El problema es que, durante la conversión, las imágenes se han distorsionado y no tengo imágenes originales, ya que fue el desarrollador anterior quien hizo lo maravilloso. El GIF ya no se anima y cada fotograma tiene 4 copias del mismo fotograma con tamaños decrecientes. No he trabajado mucho en Imagemagick antes.

¿Hay alguna forma de que pueda restaurar la imagen original desde la versión distorsionada?

El comando utilizado fue:

convert <old-file.gif> -interlace plane <new-file.gif>

Gracias