Quiero cambiar el tamaño de un archivo GIF animado do.gif
Si lo hago convert do.gif -resize 24x24\! do-24.gif
, lo cambio de tamaño en do-24.gif pero no animado
¿Cómo cambiar el tamaño correctamente para obtener la misma animación?
imagemagick
zuba
fuente
fuente
-coalesce
"crea una vista completa de la animación en cada punto, un poco como una tira de película real, en lugar de una secuencia de animación. Dicha secuencia, conocida como Animación fusionada, es mucho más fácil de estudiar, editar, modificar y volver a optimizar".gifsicle --resize 24x24 > do-24.gif
puede a esto tambiénEstaba buscando una solución de imagen mágica, ya que estoy familiarizado con ella, pero al final fui con la sugerencia de @ sam de
gifsicle
. Hizo justo lo que quería, sin problemas.Puede optimizar el tamaño del archivo resultante de muchas maneras, pero solo reduje el tamaño y reduje el número de colores. Trabajado como un encanto:
fuente
-coalesce
+-deconstruct
Después
-coalesce
, es probable que desee agregar un-deconstruct
:La causa raíz del problema es que su GIF de entrada se minimizó correctamente: GIF permite que el siguiente cuadro sea solo el rectángulo modificado del anterior en un desplazamiento.
-coalesce
luego expande todos los cuadros al tamaño original, lo que hace que el cambio de tamaño funcione, pero no vuelve a comprimir los cuadros nuevamente como su imagen de entrada: ¡-deconstruct
es necesario para eso!Usando los datos de prueba de esta respuesta: ¿Cómo creo un gif animado a partir de imágenes fijas (preferiblemente con la línea de comando)? Podemos ver esto claramente con
identify
:out.gif
out-coalesce.gif
out-deconstruct.gif
Primero, vemos cómo ingresar el archivo,
out-convert.gif
de hecho, se comprimió, ya que el fotograma 2 solo está516x516
en desplazamiento252+257
, mientras que el fotograma completo 1 lo está1024x1024
.Entonces, si comparamos las tres conversiones:
out.gif
: Todos los marcos son256x256
o más grandes, y enormes a aproximadamente 5MiB, TODO ¿por qué?Visualmente incorrecto, ya que esos
256x256
cuadros aproximadamente tienen un desplazamiento distinto de cero, por ejemplo,125+128
para el cuadro 2.out-coalesce.gif
: todos los marcos son256x256
y tienen el desplazamiento correcto0+0
.La salida parece visualmente correcta, pero el tamaño del archivo de salida es 2.0 MiB, que es más grande que
out-deconstruct.gif
out-deconstruct.gif
: cuadros comprimidos, tamaño de salida final 1.9 MiB.No es considerablemente más pequeño que
out-coalesce.gif
, pero creo que esto es solo porque el suelo negro se comprime muy bien, y podría ser muy significativo en general.ffmpeg y gifsicle
También probé los siguientes comandos:
y ambos produjeron una salida de 1.5 MiB aún más pequeña que se veía correctamente.
Consulte también: ¿Cómo creo un gif animado a partir de imágenes fijas (preferiblemente con la línea de comando)?
TODO: ¿por qué pueden hacerlo más pequeño que
convert
? ¿Están simplemente seleccionando mejores rectángulos de diferencia más mínimos, o algo más?Probado en Ubuntu 18.10, ffpmeg 4.0.2-2, ImageMagick 6.9.10-8.
fuente