Konvertieren

  • Umwandeln von PDF-Dateien in PS-Dateien:
    Manche PDF-Dateien lassen sich nicht mit lpr ausdrucken lassen. Am einfachsten ist es dann, diese Dateien mit
    > acroread -toPostScript dateiname.pdf 
    in Postscriptdateien umzuwandeln. Mehr zu den Kommandozeilenparametern des Acrobat Reader unter Linux findet man mit
    > acroread -help
    oder
    > acroread -helpall
  • Umwandeln von (einseitigen) PS-Dateien in GIF-Dateien:
    Zum Umwandeln von PS-Dateien in GIF-Dateien verwendet man am besten die ImageMagick-Tools. Sind diese installiert, so kann man eine einzelne PS-Datei z.B. mit folgendem Befehl in eine GIF-Datei umwandeln:
    > convert -density 100x100 -rotate -90 -resize 768x576 datei.ps datei.gif
    Die Optionen im einzelnen:
    • -density 100x100: Die PS-Datei wird mit jeweils 100 dpi in x- und y-Richtung gerendert, bevor sie konvertiert wird.
    • -rotate -90: Das Bild wird vor der Konvertierung um 90 Grad nach links rotiert.
    • -resize 768x576: Das Bild wird von 100x100 dpi auf PAL-Auflösung von 768x576 Pixel skaliert.
    Will man mehrere PS-Dateien in GIF-Dateien umwandeln, so kann man dies mit
    > mogrify -verbose -density 100x100 -rotate -90 -resize 768x576 -format gif *.ps
    erledigen. Wichtig dabei ist die zusätzliche Option -format gif. Ohne diese würde mogrify die Orginal-PS-Dateien überschreiben. Mit der Option -verbose schließlich gibt mogrify genauer aus, wie die Konvertierung voranschreitet.
  • Umwandeln von JPEG-Dateien in EPS-Dateien:
    Am einfachsten gelingt das mit dem ImageMagick-Tool mogrify:
    mogrify -format eps2 [name]*.jpeg
    
    Dieser Befehl wandelt alle JPEG-Dateien in einem Verzeichnis, die mit dem Prefix [name] beginnen, in EPS-Dateien um (genauer gesagt in EPS Version 2, welches intern nochmals komprimiert wird und daher wesentlich kompaktere Dateien erzeugt).
    Als Alternative wird oft imgtops angegeben. Allerdings ist imgtops ein veraltetes Python-Skript aus dem Jahre 2003, welches auch nicht mehr gepflegt wird. Bei meinen Versuchen stellte sich heraus, dass im Gegensatz zu den ImageMagick-Tools keine validen EPS2-Dateien erzeugt. Fügt man die mit imgtops erzeugten Dateien über Latex in ein PDF ein, so werden auf einmal Schriftarten falsch angezeigt. Auch sind die mit imgtops erzeugten Dateien wesentlich größer als die durch convert bzw. mogrify generierten EPS-Dateien. Darum Finger weg vom imgtops, die ImageMagick-Tools machen es besser und können zudem noch eine ganze Menge mehr.
  • Umwandeln von Farb- in Graustufen-EPS-Dateien:
    Es gibt verwirrend viele Möglichkeiten mit den ImageMagick-Tools ein Farb- in ein Graustufenbild umzuwandeln (siehe Converting Color to Gray-Scale). Aber die einfachste Lösung ist die Benutzung der Option -type wie bei fightpc.blogspot.com beschrieben:
    > convert color.eps -type grayscale -compress jpeg eps2:gray.eps
    
    Zusätzlich ist hier durch Angabe von eps2: noch sichergestellt, dass die generierte EPS-Datei im EPS2-Format gespeichert wird, was es möglich macht über die Option -compress jpeg anzugeben, dass intern in der EPS-Datei das Bild JPEG-komprimiert gespeichert wird. Dies sollte man immer machen, denn die so erzeugten EPS-Dateien sind wesentlich platzsparender.
  • Umwandeln von (einseitigen) PS-Dateien in EPS-Dateien:
    Auch dazu verwendet man am einfachsten das ImageMagick-Tool convert:
    > convert datei.ps datei.eps
    
    So sollte es funktionieren, aber leider hat die mit SUSE 9.3 mitgelieferte Version der Image-Magick-Tools eine Bug und man bekommt nur die folgende Fehlermeldung zu sehen:
    Unknown device: nodevice
    convert: Delegate failed `"gs" -q -dBATCH -dSAFER -dMaxBitmap=500000000 
    -dNOPAUSE -dAlignToPixels=0 -sDEVICE="nodevice" -sOutputFile="%o" -f"%i"'.
    
    Grund ist eine fehlerhafte Konfiguration von ImageMagick in Bezug auf Ghostview. PS,PDF und EPS-Dateien werden nämlich nicht von convert selbst behandelt, stattdessen ruft es intern Ghostview auf und verwendet es zum Konvertieren der Dateien. Die Kommandozeile für den Ghostviewaufruf entnimmt convert der Datei delegates.xml (unter Suse 9.3 zu finden unter /usr/lib/ImageMagick-6.1.8/config). Seltsamerweise sind in dieser Datei sämliche Aufrufe für das Konvertieren von PS, PDF und EPS-Dateien ineinander fehlerhaft. Dort wo -sDEVICE="epswrite" bzw. -sDEVICE="pswrite" oder -sDEVICE="pdfwrite" verwendet werden sollte, steht, wie aus obiger Fehlermeldung bereits zu sehen, -sDEVICE="nodevice". Ist man kein Administrator, kann man an dieser Situation auch nichts ändern, denn leider liest ImageMagick die Konfigurationsdateien in der falschen Reihenfolge (siehe Resources-Seite der Image-Magick-Tools), so dass man nicht durch eine eigene Datei delegates.xml im lokalen Konfigurationsverzeichnis ~/.magick die fehlerhafte Datei im Verzeichnis /usr/lib/ImageMagick-6.1.8/config verdecken kann. Hat man Administratorrechte, so sollte man sich an der neusten (und fehlerbereinigten) Version der Datei delegates.xml von oben bereits genannter Homepage orientieren und in der lokalen Datei sämtliche Einträge von -sDEVICE="nodevice" durch die entsprechenden -sDEVICE="epswrite" bzw. -sDEVICE="pswrite" oder -sDEVICE="pdfwrite" ersetzen. Nach dieser Prozedur funktioniert das Konvertieren von PS zu EPS-Dateien (und auch das von PDF in EPS-Dateien) wieder reibungslos.
    Unter Suse 9.1 gab es übrigens einen anderen Bug beim Konvertieren von PS nach EPS-Dateien. Zwar funktionierte hier der Aufruf von Ghostscript reibungslos, jedoch wurde die Bounding-Box-Werte im erzeugten EPS-File falsch gesetzt. Die richtigen Werte muß man unter Suse 9.1 durch eine Extraaufruf von Ghostscript herausbekommen und diese dann manuell an die entsprechende Stelle in der EPS-Datei eintragen. Diese Prozedur ist hier beschrieben.
Erstellen von Filmen und Animationen
  • Erstellen von GIF-Animationen mit gifsicle:
    Das Einfügen von Videos in OpenOffice V1.x/Impress funktioniert unter Linux leider nicht. Als Workaround kann man jedoch GIF-Animationen verwenden, da diese als Bilder eingefügt werden können. Erstellen kann man diese mit dem gifsicle-Befehl, z.B.:
    > gifsicle --delay=4 --colors=256 --loopcount=forever *.gif > anim.gif
    Dieser Befehl erstellt aus allen GIF-Dateien in einem Verzeichnis eine GIF-Animation namens anim.gif. Mithilfe der Option --delay=4 wird dabei die Anzeigedauer eines Bildes zu 4 Hunderstelsekunden (1/25 Sekunde) festgelegt, so dass die Animation mit einer Geschwindigkeit von 25 Bildern/s abgespielt wird. Die Option --loopcount=forever gibt an, dass die Animation unendlich oft wiederholt werden soll und die Option --colors=256 sorgt für die Angleichung der Farbpaletten der Einzelbilder, so dass jedes Einzelbild dieselbe Farbpalette mit 256 Farben hat.
  • Erstellen von Divx-Filmen aus PNG-Dateien mit mencoder:
    Folgende Kommandozeile kann man zum Erstellen von Divx-Filmen mit dem mencoder verwenden:
    > mencoder mf://*.png -mf w=800:h=600:fps=5:type=png -ovc lavc -lavcopts vcodec=mpeg4 -oac copy -ffourcc DX50 -o film.avi
    
    Dieser Befehl erstellt aus allen PNG-Dateien in einem Verzeichnis (mf://*.png) einen Film mit dem Namen "film.avi" (-o film.avi) mit der Auflösung 800x600px und einer Bildwiederholrate von 5 Bildern pro Sekunde (-mf w=800:h=600:fps=5:type=png). Zum Kodieren wird die libavcodec des FFmpeg-Systems verwendet (-ovc lavc). Von denen mit libavcodec möglichen Videoformaten wird Divx ausgewählt (-lavcopts vcodec=mpeg4). Eventuell vorhandene Audiodaten (in PNG sind natürlich keine gespeichert!) werden einfach kopiert ohne nochmal kodiert zu werden (-oac copy). Unbedingt erforderlich ist auch die Option -ffourcc DX50. Diese setzt die richtige Dateikennung DX50 für den Divx-Film. Ohne diese kann der Divx-Film ansonsten nur vom mplayer, jedoch nicht(!) von sämtlichen anderen unter Windows verbreiteten Divx-Playern abgespielt werden. Mehr dazu und zur Kodierung mit dem MPlayer gibt es auf
  • Wichtige Bildauflösungen:
    • PAL: 768 x 576 Pixel (Verhältnis 4:3)
    • D1 (DVD-Auflösung): 720 x 576 Pixel (Verhältnis 5:4)
    • HD 720 : 1280 × 720 (Verhältnis 16:9)
    • HD 1080 : 1920 × 1080 (Verhältnis 16:9)

Verschiedenes zum Thema Dateiformat
  • Dateiformat einer Datei mit unbekannter Endung oder ohne Endung herausfinden:
    > file [datei]
    [datei]: HTML document text
    
    Im diesem Beispiel sieht man, das man mit dem Kommando file sehr einfach herausfinden kann, dass die Datei [datei] eine HTML Datei ist. Das ganze funktioniert auch z.B. bei Verzeichnissen:
    > file verzeichnis

  • Herausfinden, ob eine XML-Datei valide ist:
    Um zu sehen, ob eine XML-Datei valide ist, d.h. entsprechende einem Schema z.B. im XSD-Format vorliegt, benutzt man
    > xmllint -noout Output.xml –schema ../schema/output_2.5.xsd
    
    In diesem Beispiel wird getestet, ob die Datei Output.xml dem Schema output_2.5.xsd entspricht. Gibt das Kommando keine weiter Ausgabe zurück ist die Datei tatsächlich valide, ansonsten erscheinen Fehlermeldungen über die entsprechenden fehlerhaften Zeilen.
  • Herausfinden, ob ein Programm für 32 oder 64bit, dynamisch oder statisch gelinkt kompiliert wurde:
    Auch das gelingt mit dem file-Kommando:
    > file ssh
    ssh: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9,
    dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped
    
    Detailliertere Informatione bekommt man in diesem Fall mit
    > readelf -h ssh
    ELF Header:
      Magic:   7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
      Class:                             ELF32
      Data:                              2’s complement, little endian
      Version:                           1 (current)
      OS/ABI:                            UNIX - System V
      ABI Version:                       0
      Type:                              EXEC (Executable file)
      Machine:                           Intel 80386
      Version:                           0x1
      Entry point address:               0x80508d0
      Start of program headers:          52 (bytes into file)
      Start of section headers:          1960868 (bytes into file)
      Flags:                             0x0
      Size of this header:               52 (bytes)
      Size of program headers:           32 (bytes)
      Number of program headers:         8
      Size of section headers:           40 (bytes)
      Number of section headers:         37
      Section header string table index: 34
    

Avatar
Andreas Maier
Data Alchemist

My interests include machine learning, software development, physics and mathematics

Related