Die Digitale Bildverarbeitung erfolgt in mehreren Schritten.
Bilder von der Didgitalkamera einlesen
Einlesen geht recht komfortabel auf der Kommandozeile mit gphoto2.
Bilder auf der Kamera auflisten
gphoto2 --auto-detect -L
Alle Bilder einlesen
gphoto2 --auto-detect --filename %04n.%C --get-all-files
oder nur bestimmte Bereiche (nach laufender Nummer)
gphoto2 --auto-detect --filename %04n.%C --get-file "23-1337"
Hierbei werden die Bilder mit der laufenden Nummer 23 bis 1337 eingelesen und im aktuellen Verzeichnis mit laufender Nummer:
0023.JPG
...
1337.JPG
Dateinamen / Metadaten optimieren
Bilder anhand des Aufnahmedatums (EXIF) umbenennen
# JPG Dateien
exiftool -P '-DateTimeOriginal>Filename' -d %Y%m%d-%H%M%S-%%0.4C.jpg *.[jJ][pP][gG]
# Canon Raw Dateien
exiftool -P '-DateTimeOriginal>Filename' -d %Y%m%d-%H%M%S-%%0.4C.cr2 *.[cC][rR]2
# oder alles auf einmal (Dateiendung wird beibehalten - also z.B. .JPG statt .jpg!)
exiftool -P '-DateTimeOriginal>Filename' -d %Y%m%d-%H%M%S-%%0.4C.%%e *
Ergebnis:
20131025-161850-0000.cr2
20131025-161850-0000.jpg
...
MTime der Bilder anhand des Aufnahmedatums (EXIF) setzen
exiftool '-DateTimeOriginal>FileModifyDate' *
Datum / Uhrzeit verschieben
Falls die Uhr der Kamera verstellt war können die EXIF Aufnahmedaten (DateTimeOriginal, CreateDate und ModifyDate) auch um eine Zeitspanne verschoben werden:
# Zeit in HH:MM:SS abziehen
DIFFTIME="00:51:41"
exiftool -AllDates-=$DIFFTIME *
# oder drauf rechnen
exiftool -AllDates+=$DIFFTIME *
N.B. Bilder können auch wieder auf die SD-Card der (Canon) Kamera geladen werden
Dazu erstmal entsprechende Namen vergeben:
# JPEG
COUNTER=1; for file in *.[jJ][pP][gG]; do NAME=$(printf "IMG_%0.4i.JPG\n" $COUNTER); mv $file $NAME; let COUNTER=$COUNTER+1; done
# Raw / CR2
COUNTER=1; for file in *.[cC][rR]2; do NAME=$(printf "IMG_%0.4i.CR2\n" $COUNTER); mv $file $NAME; let COUNTER=$COUNTER+1; done
Und eventuell gedrehte Bilder wieder zurücksetzen:
for file in *.jpg; do width=$(exiftool $file | egrep "^Image Width" | awk '{print $4}'); height=$(exiftool $file | egrep "^Image Height" | awk '{print $4}'); echo "-----"; echo "Width: $width -- Height: $height"; if [ $width -le $height ]; then echo "Rotate..."; jpegexiforient -6 ${file}; jhead -autorot ${file}; jpegexiforient -8 ${file}; fi; done
Anschliessend diese Dateien (IMG_0001.JPG, IMG_0002.JPG, … IMG_0947.JPG) auf die SD-Card nach DCIM/100CANON/ (oder 101TEST1 oder 102BLABL …) kopieren. Der Ordner muss lediglich mit drei Ziffern beginnen und anschließend mit fünf Buchstaben (Groß) enden.
Bilder bearbeiten (Konsole / Batch)
Automatisch rotieren
Falls man an irgendeiner Stelle Software einsetzt die die Bilder nicht automatisch anhand der Metadaten dreht kann man sie (verlustlos) rotieren lassen.
jhead -autorot *.jpg
# oder
exifautotran *.jpg
# oder
exiftran -aip *.jpg
JPEG Bildergröße optimieren (lossless)
Mit “jpegoptim” können die Huffman tables verlustfrei optimiert werden was zu klieneren JPEG Dateien führen kann. jpegoptim -p -t *.jpg
Für eine Diashow in 1920x1080 bereitstellen
DIR="/Pfad/zur/den/Bildern"; for longfile in $(find $DIR -name "*.jpg"); do file=$(basename $longfile); echo "working on $file..."; cp -a ${DIR}/${file} ${file}; jhead -autorot ${file}; convert ${file} -background black -gravity center -resize 1920x1080 -extent 1920x1080 ${file}_tmp.jpg; mv ${file}_tmp.jpg ${file}; done
Bilder auf bestimmte Größe stutzen (z.B. 800 Pixel breite):
convert -resize 800x original.jpg neuesbild.jpg
Exifdaten eines Bildes löschen:
exiftool -all= neuesbild.jpg
GUI-Tools
Bildbetrachter
Mit einem Bildbetrachter kann schnell ein Überblick über die Bilder gewonnen werden.
Geeqie ist ein recht schlanker Bildbetrachter ohne Datenbankfunktion mit dem auf die Ordnerstruktur zugegriffen werden kann.
gThumb stammt aus den Gnome Projekt und bietet ebenfalls Zugriff über die Ordnerstruktur.