방금 애니메이션이 포함된 PDF 파일을 얻기 위해 패키지를 사용해 보았는데 animate
훌륭하게 작동합니다!
그러나 생성된 파일의 크기는 내가 다루고 있는 애니메이션의 크기보다 10배 더 크고 대부분의 경우 훨씬 더 크다는 것을 알았습니다.
그 이유는 모든 프레임에 대해 전체 프레임이 아닌 연속 프레임 간의 차이를 사용하지 않기 때문이라고 생각합니다. 예를 들어 이것은 gifsicle이 사용하는 것입니다.http://www.lcdf.org/gifsicle/ (출처 사용 가능) "각 프레임의 변경된 부분만 저장하므로 GIF를 근본적으로 줄일 수 있습니다."
이것이 패키지에서 최적화될 가능성이 있습니까 animate
?
답변1
timeline
차등 비트맵과 패키지 기능을 사용하여 PDF 애니메이션의 크기를 최적화할 수 있습니다 animate
.
그러나 표시할 새 애니메이션 프레임이 있을 때마다 다시 표시해야 하는 차등 프레임 수가 1씩 증가한다는 점에 유의하세요. 시간이 지남에 따라 실행 중인 애니메이션의 속도가 느려질 수 있습니다. 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.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