动画包很棒但是它可以有更好的动画压缩吗?

动画包很棒但是它可以有更好的动画压缩吗?

我刚刚尝试使用该animate包来获取带有动画的 pdf 文件,效果非常好!

然而,我注意到生成的文件大小是我正在处理的动画的 10 倍,而且在大多数情况下甚至更糟。

我认为原因在于没有使用连续帧之间的差异,而是使用每帧的完整帧。例如,这就是 gifsicle 使用的http://www.lcdf.org/gifsicle/ (来源可用)“仅存储每帧改变的部分,并可以大幅缩小您的 GIF。”

有没有可能在animate包中进行优化?

答案1

timeline您可以使用差异位图和包的功能来优化 PDF 动画的大小animate

但请注意,每显示一个新动画帧,需要重新显示的差分帧数就会增加一个。这可能会随着时间的推移减慢正在运行的动画的速度。Adobe Reader 最初并未针对图形渲染速度进行优化。因此,对于较长的位图序列,最好制作一个视频文件 (MP4/H.264) 并将其嵌入到包中media9

如果您仍想为差异位图序列制作动画,请按以下步骤操作:

(1)使用以下方法创建原始动画 gif 的尺寸优化版本gifsicle

gifsicle -O3 animated.gif > optimized.gif

为了测试目的,你可以尝试使用来自渐近线网站的这个动画 gif:http://asymptote.sourceforge.net/gallery/animations/wheel.gif

(2)使用下面列出的脚本生成图像差异的PNG 序列(difference-0.png、 、...) 。该脚本将要使用的时间线写入标准输出,然后重定向到文本文件:difference-1.pngungif.sh\animategraphicstimeline.txt

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

(3)可以从以下 LaTeX 源文件生成带有动画序列的 PDF(可能需要调整最大帧数和帧速率):

\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) 在 Adob​​e Reader 中查看动画之前,请确保 Reader 设置(编辑->首选项->页面显示)中的“平滑图像”未选中。否则,您将得到难看的伪影。

Bash 脚本的内容ungif.sh(需要 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

相关内容