El paquete animate es genial, pero ¿podría tener una mejor compresión de animación?

El paquete animate es genial, pero ¿podría tener una mejor compresión de animación?

¡Acabo de probar el animatepaquete para obtener archivos pdf con animaciones y funciona muy bien!

Sin embargo, noté que el tamaño de los archivos generados es 10 veces mayor de lo que podría ser para las animaciones que estoy tratando, y en la mayoría de los casos es incluso peor.

Creo que la razón es no utilizar la diferencia entre fotogramas consecutivos en lugar del fotograma completo para cada fotograma. Esto es por ejemplo lo que usa gifsicle.http://www.lcdf.org/gifsicle/ (fuente disponible) "Almacena solo la parte modificada de cada fotograma y puede reducir radicalmente tus GIF".

¿Alguna posibilidad de que esto pueda optimizarse en el animatepaquete?

Respuesta1

Puede optimizar el tamaño de la animación PDF utilizando mapas de bits diferenciales y la timelinefunción del animatepaquete.

Sin embargo, tenga en cuenta que con cada nuevo fotograma de animación que se muestra, el número de fotogramas diferenciales que deben volver a mostrarse aumenta en uno. Esto puede ralentizar una animación en ejecución a medida que avanza el tiempo. Adobe Reader no se optimizó principalmente para la velocidad de representación gráfica. Por lo tanto, para secuencias de mapas de bits largas, puede ser mejor producir un archivo de vídeo (MP4/H.264) e incrustarlo en el media9paquete.

Si aún desea animar secuencias de mapas de bits diferenciales, proceda de la siguiente manera:

(1) Cree una versión de tamaño optimizado del gif animado original usando gifsicle:

gifsicle -O3 animated.gif > optimized.gif

Para fines de prueba, puede probar este gif animado del sitio web de asíntota:http://asymptote.sourceforge.net/gallery/animations/wheel.gif

(2) Produzca una secuencia PNG ( difference-0.png,, difference-1.png...) de diferencias de imágenes, utilizando el ungif.shscript que se detalla a continuación. El script escribe la línea de tiempo que se utilizará en \animategraphicsla salida estándar que se redirige al archivo de texto timeline.txt:

ungif.sh optimized.gif difference.png > timeline.txt

(3) El PDF con la secuencia animada se puede generar a partir del siguiente archivo fuente LaTeX (será necesario ajustar el número máximo de fotogramas y quizás la velocidad de fotogramas):

\documentclass{article}
\usepackage{animate}

\begin{document}

\noindent\animategraphics[
  controls,
  width=0.5\linewidth,
  timeline=timeline.txt
]{10}{difference-}{0}{99} %adjust the maximum frame number

\end{document}

(4) Antes de ver la animación en Adobe Reader, asegúrese de que 'Imágenes suaves' en la configuración del Reader (Editar->Preferencias->Visualización de página) no esté marcada. De lo contrario obtendrás artefactos feos.

Contenido del script Bash ungif.sh(requiere ImageMagick):

#!/bin/bash

wxh=$(identify -format '%Wx%H' $1[0])
fs=$(identify -format %n $1)

for (( i=0; i<$fs; i++ ))
do
  convert -page $wxh ${1}[$i] -matte -background none -layers coalesce -quality 90 ${2/./-$i.}
  echo "::${i}x0"
done

información relacionada