Robert B.: animierte Diashow

Hallo Forum,

ich suche nach einer möglichst quelloffenen und automatisierbaren Möglichkeit, aus einer Serie an Bildern eine animierte Diashow zu erzeugen, die halbwegs bequem in andere Formate konvertiert werden kann und ohne spezielle Wiedergabesoftware auskommt. Zum jeweiligen Bild soll noch ein kurzer Text angezeigt werden.

Ich habe mir SMIL angeschaut, was von der Theorie meinem Anspruch entspricht:

<smil xmlns="http://www.w3.org/ns/SMIL" version="3.0"  
	xml:lang="de" title="LEED-Diashow">  
<head>  
	<layout>  
		<root-layout width="512" height="512"/>  
		<region xml:id="canvas" top="0" left="0" width="512" height="512"/>  
		<region xml:id="banner" top="0" left="0" width="512" height="20"/>  
	</layout>  
</head>  
<body>  
	<seq>  
		<par>  
			<img src="010eV.png" region="canvas" dur="5s"/>  
			<smilText region="banner" dur="5s">10 eV</smilText>  
		</par>  
		<par>  
			<img src="050eV.png" region="canvas" dur="5s"/>  
			<smilText region="banner" dur="5s">50 eV</smilText>  
		</par>  
		<par>  
			<img src="100eV.png" region="canvas" dur="5s"/>  
			<smilText region="banner" dur="5s">100 eV</smilText>  
		</par>  
	</seq>  
</body>  
</smil>

Allerdings wird SMIL nicht mehr weiter gepflegt und dieses SMIL 3 Beispiel lässt sich mit den Standard-Medienspielern unter Linux nicht wiedergeben. Die Möglichkeit, SMIL ggf. in andere Formate zu konvertieren, scheint mir auch nicht großartig gegeben zu sein (außer vielleicht mit XSLT in ein „Drehbuch“ für ein Video-Authoring-Programm).

Um diese Diashow zumindest in eine LaTeX-Präsentation einbauen zu können, funktioniert folgender Code des Beamer-Pakets:

\begin{frame}
 \animate<1-3>
 \transdissolve[duration=3]<1-3>

\begin{figure}
 \includegraphics<1>[width=.5\textwidth]{010eV.png}
 \includegraphics<2>[width=.5\textwidth]{050eV.png}
 \includegraphics<3-4>[width=.5\textwidth]{100eV.png}
 \caption{\only<1>{10,eV}\only<2>{50,eV}\only<3-4>{100,eV}}
 \end{figure}

\end{frame}

Allerdings funktioniert dies nur für ein Ausgabemedium (nämlich PDF-Präsentationen mit LaTeX).

Animierte GIF-Dateien kommen auf Grund des Farbraums für den momentanen Einsatzzweck nicht in Frage. Aber gibt es generell ein Kommandozeilen-Programm, welches animierte GIFs aus einer Serie von Einzelbildern erstellen kann? Ich möchte nicht 50 Bildern einzeln in Gimp hereinklicken.

Ansonsten müsste es wohl animiertes SVG oder HTML+JavaScript sein, um den Webbrowser als Wiedergabeprogramm zu verwenden, vermute ich. Oder gibt es noch andere Alternativen?

Viele Grüße,
Robert

  1. Hallo zusammen,

    eine SVG-Animation habe ich nun auch hinbekommen, allerdings sind in meinem Firefox Bild und Text nicht ganz synchron: Das erste Bild wird statt 5 ca. 7 Sekunden angezeigt, während der Text entsprechend der Spezifikation ein- und ausgeblendet wird. Weiß jemand, woran das liegen kann?

    Hier der SVG-Ansatz:

    <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">  
    <svg version="1.1" width="10cm" height="10cm" viewBox="0 0 512 512"  
    	xmlns="http://www.w3.org/2000/svg"  
    	xmlns:xlink="http://www.w3.org/1999/xlink">  
    	<title>LEED-Show mit SVG</title>  
    	<style type="text/css"><![CDATA[  
    	#caption text {  
    		visibility: hidden;  
    		fill: #ffffff;  
    	}  
    	]]></style>  
      
    	<image x="0" y="0" width="512" height="512" xlink:href="010eV.png">  
    		<animate attributeName="xlink:href" attributeType="XML" begin="5s" dur="5s" from="010eV.png" to="050eV.png" fill="freeze"/>  
    		<animate attributeName="xlink:href" attributeType="XML" begin="10s" dur="5s" from="050eV.png" to="100eV.png" fill="freeze"/>  
    	</image>  
    	<g transform="translate(5,500)" id="caption">  
    		<text id="t010" style="visibility:visible" x="0" y="0">10 eV  
    			<set attributeName="visibility" attributeType="CSS" from="visible" to="hidden" begin="5s"/>  
    		</text>  
    		<text id="t050" x="0" y="0">50 eV  
    			<set attributeName="visibility" attributeType="CSS" from="hidden" to="visible" begin="5s" dur="5s"/>  
    		</text>  
    		<text id="t100" x="0" y="0">100 eV  
    			<set attributeName="visibility" attributeType="CSS" from="hidden" to="visible" begin="10s"/>  
    		</text>  
      
    	</g>  
    </svg>
    

    D.h. ich könnte tatsächlich zumindest per Script eine SMIL-Datei erzeugen und die nach Bedarf in LaTeX und SVG XSL-transformieren.

    Viele Grüße,
    Robert

    1. Hallo Robert,

      eine SVG-Animation habe ich nun auch hinbekommen, allerdings sind in meinem Firefox Bild und Text nicht ganz synchron: Das erste Bild wird statt 5 ca. 7 Sekunden angezeigt, während der Text entsprechend der Spezifikation ein- und ausgeblendet wird. Weiß jemand, woran das liegen kann?

      Das set-Element hat kein from-Attribut. Probiere außerdem mal statt animate ebenfalls set.

      Habe das mit einfarbigen Flächen für die PNGs probiert und es funktioniert besser, sofern das so beabsichtigt ist.

      Grüße,
      Thomas

      1. Moin Thomas,

        Das set-Element hat kein from-Attribut. Probiere außerdem mal statt animate ebenfalls set.

        Läuft beides bestens, Danke für den Tipp! Mit einer Animationsdauer (dur) von einer Sekunde ist der Übergang sogar recht flüssig.

        Viele Grüße,
        Robert

  2. Hallo Forum,

    ich suche nach einer möglichst quelloffenen und automatisierbaren Möglichkeit, aus einer Serie an Bildern eine animierte Diashow zu erzeugen, die halbwegs bequem in andere Formate konvertiert werden kann und ohne spezielle Wiedergabesoftware auskommt. Zum jeweiligen Bild soll noch ein kurzer Text angezeigt werden.

    Texte und Grafiken so in eine Datei verpacken, dass jeder Browser die Show offline wiedergeben kann? Warum nicht. Was meinst Du mit anderen Formaten?

    MfG

    1. Moin hotti,

      Texte und Grafiken so in eine Datei verpacken, dass jeder Browser die Show offline wiedergeben kann? Warum nicht. Was meinst Du mit anderen Formaten?

      Praktisch wäre ein Animationsformat, das ich auch in LaTeX-Präsentationen verwenden kann.

      Ich habe gestern als Proof of Concept jedenfalls zwei XSLT-Dateien erstellt, mit denen ich SMIL als Ausgangsformat wahlweise in LaTeX oder SVG transformieren kann. Das scheint mir bislang ein gangbarer Weg. (Natürlich könnte ich per Script auch gleich beide Formate erzeugen, da es alles reiner Text ist.)

      Viele Grüße,
      Robert

      1. Moin hotti,

        Texte und Grafiken so in eine Datei verpacken, dass jeder Browser die Show offline wiedergeben kann? Warum nicht. Was meinst Du mit anderen Formaten?

        Praktisch wäre ein Animationsformat, das ich auch in LaTeX-Präsentationen verwenden kann.

        Danke für die Rückmeldung. Ich hatte eher den Browser (JavaScript) im Visir.

        Schöne Grüße.

        1. Moin hotti,

          Danke für die Rückmeldung. Ich hatte eher den Browser (JavaScript) im Visir.

          Durchaus auch, falls die Diashow in einem anderen Zusammenhang (Format) gezeigt werden soll. Aber wie ich gesehen habe, braucht der Browser gar kein JavaScript, „plain SVG“ tut es auch.

          Viele Grüße,
          Robert