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

SVG in PDF umwandeln

Mit Inkscape geht das ganz schnell über “Speichern unter”, hier interessiert die Kommandozeile.

Einzelnes Bild

Werkzeug: Inkscape

$> inkscape --without-gui --export-pdf file.pdf file.svg

Alle Bilder eines Verzeichnisses

Hier die schnelle Variante, die Bilder mit Namen file.svg.pdf erzeugt:

$> find -name "*.svg" -exec inkscape --without-gui --export-pdf {}.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 den 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