animate 包很棒,但它可以有更好的動畫壓縮嗎?

animate 包很棒,但它可以有更好的動畫壓縮嗎?

我剛剛嘗試了該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.pngungif.sh\animategraphicstimeline.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) 在 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

相關內容