convert
, mogrify
und identify
Syntax von convert und mogrify sind (fast) gleich, convert
macht eine dementsprechend geänderte Kopie, mogrify
ändert das Original. Bildinformationen kann man sich mit identify
anzeigen lassen
exiftool -ext jpg -FileName'<DateTimeOriginal' -d %Y%m%d_%H%M%S.jpg Dir
Benennt alle Bilder mit Dateierweiterung jpg
im Verzeichnis Dir
nach Erstellungsdatum und Uhrzeit um - falls die Uhrzeit der Kamera richtig eingestellt war.
Falls die Uhrzeit nicht richtig war, kann man dies den Bildern vorher beibringen: z.B. 1 Stunde und 50 Minuten abziehen:
exiftool -ext jpg exiftool -DateTimeOriginal-='0:0:0 1:50:0' Dir
(Quelle: exiftool Manpage)
Bild um 90 Grad rotieren (im Uhrzeigersinn):
mogrify -rotate 90 bild.jpg
→ http://www.imagemagick.org/script/command-line-options.php#rotate
Bei Kameras mit eingebauten "Ausrichtungssensor" geht das auch einfacher mit exiftran:
exiftran -a -i bild.jpg
anzeigen
exiftool bild.jpg
setzen (hier überschreiben), keine Backupkopie
exiftool -overwrite_original -Keywords="Skippertraining2006"
hier hatte ich ein paar Fotos und einen beschreibenden Text in einer Textdatei. (Die Dateien waren bis auf die Endung gleich benannt). Ziel: Beschreibenden Text in die jpg-Datei selber schreiben
DATEIEN=`ls p*txt | awk -F. '{print $1}'` for f in $DATEIEN;do sudo exiftool "-Caption-Abstract<=$f.txt" -r $f.jpg;done
… auch Kleinvieh macht Mist, wenn man die Daumennägel nicht braucht, kann man sie auch entfernen (und die Dateien werden ohne anderweitigen Qualitätsverlust etwas kleiner)
mit exif:
for i in *.jpg;do exif --remove-thumbnail $i -o $i ;done
mit exiftool:
exiftool -b -ThumbnailImage= *.jpg
convert -resize "800>x800>" bild.jpg bild.800.jpg
Verkleinert das Bild, falls eine Seitenlänge größer als 800 Pixel ist. Das Seitenverhältnis bleibt erhalten.
Ein Bild von 1704x2272 wird also auf 600x800 verkleinert, ein Bild von 2272x1704 auf 800x600, ein Bild mit 175x175 wird gar nicht verkleinert (oder vergrößert)
$ identify bild.jpg kleinbild.jpg bild.jpg JPEG 1704x2272 1704x2272+0+0 DirectClass 8-bit 1.54796mb 0.290u 0:02 kleinbild JPEG 175x175 175x175+0+0 DirectClass 8-bit 11.4453kb $ for b in bild.jpg kleinbild.jpg; do convert -resize "800>x800>" $b x800.$b ; done $ identify x800* x800.bild.jpg JPEG 600x800 600x800+0+0 DirectClass 8-bit 294.68kb 0.040u 0:02 x800.kleinbild.jpg JPEG 175x175 175x175+0+0 DirectClass 8-bit 10.9883kb
for d in 30 40 50 75 80 100 120 150 200 ; do convert -size ${d}x${d} xc:none -fill white -draw "rectangle 0,0 $d,$d" weiss.${d}x${d}.png done
Der Trick: nicht den Alpha-Channel wegwerfen (dann werden halbtransparente Kanten hässlich), sondern einfach ein weisses Rechteck hinter das original legen
$ identify logo.bg-transparent.png logo.bg-transparent.png PNG 150x200 150x200+0+0 DirectClass 16-bit 15.2476kb $ X=150 $ Y=200 $ convert -size ${X}x${Y} xc:none -fill white -draw "rectangle 0,0 $X,$Y" weiss.${X}x${Y}.png $ composite -compose atop logo.bg-transparent.png weiss.${X}x${Y}.png logo.bg-weiss.png
Beispiel: Quadratische Bilder mit weiss hinterlegen:
for d in 30 40 50 60 75 80 100 120 150 200 250 300; do convert -size ${d}x${d} xc:none -fill white -draw "rectangle 0,0 $d,$d" weiss.${d}x${d}.png composite -compose atop logo.bg-transparent.${d}x${d}.png weiss.${d}x${d}.png logo.bg-weiss.${d}x${d}.png done
Breite x Höhe:
$ identify -format "%[fx:w]x%[fx:h]" bild.jpg 614x406
Breite (w für width):
$ identify -format "%[fx:w]" bild.jpg 614
Höhe (h für heigth):
$ identify -format "%[fx:h]" bild.jpg 406
Mist, mir sind (ungetaggte) RAW-Dateien (Olympus .orf) von verschiedenen Kameras durcheinandergeraten, bevor ich die Uhrzeiten angeglichen habe … wie sortiere ich die wieder auseinander?
Einfach den Kamera-Namen an den Dateinamen anhängen, geht so:
for file in *orf; do cam=`exiftool -s -s -s -CameraType2 $file |tr '[:upper:]' '[:lower:]'`; echo ">>$file: $cam<<"; name=`basename $file .orf`; mv $file $name.$cam.orf; done
siehe auch: Imagemagick reisst aus - Bildränder wie abgerissen (Skript)
gilt für alle Tipps, Tricks & Spickzettel:
dies sind einfache, teils banale Notizen für meinen persönlichen Gebrauch,
die hier eher zufällig auch öffentlich lesbar sind
(vielleicht hilft es ja jemandem weiter). Verwendung auf eigene Gefahr
Fehler-Hinweise, Dankesschreiben , etc. bitte an: web.21@unixwitch.de
weitere Tools / Spickzettel
mogrify
für das Entfernen von Exif-Infos habe ich dort gelesen: http://hacktux.com/read/remove/exif