O pacote animado é ótimo, mas poderia ter uma melhor compactação de animação?

O pacote animado é ótimo, mas poderia ter uma melhor compactação de animação?

Acabei de experimentar o animatepacote para obter arquivos PDF com animações e funciona muito bem!

Porém, percebi que o tamanho dos arquivos gerados é 10 vezes maior do que poderia ser para as animações com as quais estou lidando, e na maioria dos casos é ainda pior.

Acredito que o motivo seja não usar a diferença entre quadros consecutivos em vez do quadro completo para cada quadro. Isto é, por exemplo, o que o gifsicle usahttp://www.lcdf.org/gifsicle/ (fonte disponível) "Armazena apenas a parte alterada de cada quadro e pode reduzir radicalmente seus GIFs."

Alguma chance de isso ser otimizado no animatepacote?

Responder1

Você pode otimizar o tamanho da animação do PDF usando bitmaps diferenciais e o timelinerecurso do animatepacote.

Observe, entretanto, que a cada novo quadro de animação a ser mostrado, o número de quadros diferenciais que precisam ser exibidos novamente aumenta em um. Isso pode tornar a animação em execução mais lenta à medida que o tempo avança. O Adobe Reader não foi otimizado principalmente para velocidade de renderização gráfica. Para sequências de bitmap longas, pode ser melhor produzir um arquivo de vídeo (MP4/H.264) e incorporá-lo ao media9pacote.

Se você ainda quiser animar sequências de bitmap diferenciais, proceda da seguinte forma:

(1) Crie uma versão com tamanho otimizado do GIF animado original usando gifsicle:

gifsicle -O3 animated.gif > optimized.gif

Para fins de teste, você pode experimentar este gif animado do site da assíntota:http://asymptote.sourceforge.net/gallery/animations/wheel.gif

(2) Produza uma sequência PNG ( difference-0.png, difference-1.png, ...) de diferenças de imagem, usando o ungif.shscript listado abaixo. O script grava a linha do tempo a ser usada na \animategraphicssaída padrão que é redirecionada para o arquivo de texto timeline.txt:

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

(3) O PDF com a sequência animada pode ser produzido a partir do seguinte arquivo fonte LaTeX (o número máximo de quadros e talvez a taxa de quadros precisem ser ajustados):

\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 visualizar a animação no Adobe Reader, certifique-se de que 'Smooth images' nas configurações do Reader (Edit->Preferences->Page Display) esteja desmarcado. Caso contrário, você obterá artefatos feios.

Conteúdo do script Bash ungif.sh(requer 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

informação relacionada