我剛剛嘗試了該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
出於測試目的,您可以嘗試使用 asymptote 網站上的這個 gif 動畫:http://asymptote.sourceforge.net/gallery/animations/wheel.gif
(2)使用下面列出的腳本產生影像差異的 PNG 序列(difference-0.png
、 、 ...) 。該腳本將要使用的時間軸寫入標準輸出,該輸出被重定向到文字檔案:difference-1.png
ungif.sh
\animategraphics
timeline.txt
ungif.sh optimized.gif difference.png > timeline.txt
(3) 具有動畫序列的 PDF 可以從以下 LaTeX 原始檔產生(最大幀數和幀速率可能需要調整):
\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) 在 Adobe 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