Acabei de experimentar o animate
pacote 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 animate
pacote?
Responder1
Você pode otimizar o tamanho da animação do PDF usando bitmaps diferenciais e o timeline
recurso do animate
pacote.
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 media9
pacote.
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.sh
script listado abaixo. O script grava a linha do tempo a ser usada na \animategraphics
saí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