Bildbearbeitung/-konvertierung
Links zu den Programmen ganz unten.
Animiertes gif erstellen
Werkzeug: convert aus imagemagick
Evtl. vorher Originalbilder verkleinern, sonst kann das lange dauern.
$> convert -delay 20 -loop 0 *.jpg loop.gif
- delay - Anzeigedauer pro Bild in Ticks, wobei 1 Tick = 1/100 Sekunde ist
- loop - Anzahl der Wiederholungen, 0 = unendlich
Erfahrungswerte Sony alpha 6000
- Originalgröße 6000x4000
- verkleinern auf 600x400
- loop: 8-10
- 60 Bilder = 11 MB (600x400)
- 100 Bilder = 17 MB (600x400)
Film erstellen
Werkzeug: ffmpeg
Alle JPGs im Verzeichnis unbearbeitet (Größe) in mp4 umwandeln, 12 Frames pro Sekunde.
$> ffmpeg -f image2 -pattern_type glob -framerate 12 -i '*.jpg' test.mp4
Alle JPGs im Verzeichnis in mp4 umwandeln, Ausgabegröße 1920x1280, 12 Frames pro Sekunde.
$> ffmpeg -f image2 -pattern_type glob -framerate 12 -i '*.jpg' -s 1920x1280 test.mp4
Erfahrungswerte Sony alpha 6000
- Originalgröße 6000x4000
- framerate: 15
- 60 Bilder = 5,5 MB (1920x1080)
- 100 Bilder = 9,5 MB (1920x1080)
SVG in PDF umwandeln
Mit Inkscape geht das ganz schnell über "Speichern unter", hier interessiert die Kommandozeile.
Einzelnes Bild
Werkzeug: Inkscape
$> inkscape --export-type="pdf" file.svg
Alle Bilder eines Verzeichnisses
Hier die schnelle Variante, die Bilder mit Namen file.svg.pdf
erzeugt:
$> find -name "*.svg" -exec inkscape --export-type="pdf" {} \;
Wenn man den Namen noch korrigieren will, könnte man z.B. folgendes tun:
$> rename s/svg.pdf/pdf/ *.pdf
Batch-resize
Werkzeug: convert aus imagemagick
EOS-Größe auf 900×600 bringen (über Prozentangabe)
$> find -name "*jpg" -exec convert -resize 26.04% {} {} \;
Bilder auf Maximalgröße 1024 in Höhe oder Breite bringen
$> find -name "*jpg" -exec convert -resize 1024x1024 {} {} \;
Batch-Konvertieren und -Umbenennen
Werkzeug: convert aus imagemagick
Das Umbenennen geht aber mit dem Double Commander einfacher.
$> find -name "*.png" -exec convert {} {}.jpg \; $> rm *.png $> rename s/.png// *.jpg
Rotieren
Wenn man von Hand ein oder mehrere Bilder rotieren möchte, geht das über Nautilus mit installiertem Bilder-Bearbeitungs-Plugin ganz einfach.
Von der Kommandozeile ist jhead eine gute Wahl. Man kann ein oder mehrere Bilder rotieren, im Zusammenspiel mit find auch in mehreren Unterverzeichnissen. jhead dreht dabei nur Bilder, die der Drehung bedürfen, dreht in die richtige Richtung und setzt das Orientation-Flag zurück.
$> jhead -autorot <file> $> jhead -autorot *.jpg $> find -name "*.jpg" -exec jhead -autorot {} \;
Oder ein Bild nicht rotieren, sondern nur das Orientierungsflag zurücksetzen?
$> jhead -norot <file> $> jhead -norot *.jpg $> find -name "*.jpg" -exec jhead -norot {} \;
Dateiname in Bild einblenden
Werkzeug: convert aus imagemagick
Einbinden weißer Text "Testtext" unten rechts in Bild x.jpg, Ausgabe in x.stamped.jpg:
$> convert x.jpg -gravity southeast -font DejaVu-Sans-Mono-Bold -pointsize 24 -fill white -annotate 0 "Testtext" x.stamped.jpg
Zur besseren Lesbarkeit mit schwarzem Schatten hinterlegen
$> convert x.jpg -gravity southeast -font DejaVu-Sans-Mono-Bold -pointsize 24 -fill black -annotate 0 "Testtext" -fill white -annotate +3+3 "Testtext" x.stamped.jpg
Das Ganze in ein Script verpackt Download fotoname:
#!/bin/bash # v1.0, 2011-07-31 # Ekkart Kleinod (http://www.ekkart.de/) # GNU General Public License v.3 (GPL 3) # http://www.gnu.org/licenses/gpl-3.0.html # Dieses Skript druckt den Namen aller Bilder eines # Verzeichnisses in die rechte untere Ecke des Bildes. # Die Ursprungsbilder werden dabei ueberschrieben. # Optional kann ein eigener Text statt des Dateinamens angegeben werden. # This script prints the name of all image files in the # directory into the southeast corner of the image. # The original images are overwritten. # Optionally an own text can be given instead of the filename. # definitions FONTNAME=DejaVu-Sans-Mono-Bold FONTSIZE=36 TEXT='%t' # see http://www.imagemagick.org/script/escape.php # optional parameter for output text (escape sequences allowed) if [ -n "$1" ] then TEXT=$1 fi # execution find -maxdepth 1 -name "*.jpg" -exec convert {} -gravity southeast -font $FONTNAME -pointsize $FONTSIZE -fill black -annotate 0 $TEXT -fill white -annotate +3+3 $TEXT {} \; # EOF
Um den richtigen Font-Namen zu finden, einfach die Fonts ausgeben und gleich in eine Datei speichern, die man dann durchsucht:
$> convert -list font > fonts.txt
Größe ändern mit Rand
Größe eines Bild ändern und, wenn nötig, einen schwarzen Rand ins Bild nehmen, so dass alle Bilder die gleiche Größe haben.
$> convert -define jpeg:size=1920x1080 <filename> -thumbnail "1920x1080>" -background black -gravity center -extent 1920x1080 <filename>
in einem bash-Script
#!/bin/bash SIZE=1920x1080 for file in *.jpg do convert -define jpeg:size=$SIZE $file -thumbnail "$SIZE>" -background black -gravity center -extent $SIZE $file done
in einer Zeile
$> SIZE=1920x1080; for file in *.jpg; do convert -define jpeg:size=$SIZE $file -thumbnail "$SIZE>" -background black -gravity center -extent $SIZE $file; done