Kleine Bilder aussortieren

15. September 2012 | #linux #imagemagick

Keine Ahnung, ob es jemand gebrauchen kann: Ich hab jedenfalls gerade meine Wallpaper- und Foto-Ordner ausgemistet und zunächst mal kleinformatige Bilder (aka verirrte Thumbnails) aussortiert. Hilfreich ist hierbei wie so oft ImageMagick, bzw. dessen Tool identify.

Ich bin kein großer Programmierer und Bash ist schon gar nicht mein Spezialgebiet, aber ein kleines Skript hat mir gute Dienste geleistet:

#!/bin/bash

from=$1   # Quell-Verzeichnis mit Bildern
to=$2     # Ziel-Verzeichnis für zu kleine Bilder
minres=$3 # Mindestauflösung in Quadratpixeln (z.B. 786432 für 1024*768)

cd $from

# Alle jpg-Dateien ansehen
for file in *.jpg; do

  # Breite und Höhe ermitteln
  width=`identify -format '%w' $file`
  height=`identify -format '%w' $file`

  # Auflösung ausrechnen
  ((resol=$width*$height))

  # verschieben, wenn Auflösung kleiner als gewünscht
  if [ "$resol" -lt "$minres" ]; then
    mv $file $to
    echo "verschiebe $file nach $to/  ($width x $height = $resol px)"
  fi
done

# Feierabend!
exit $?

Benutzt wird es etwa mit ./KleineBilder.sh ~/Documents/Wallpapers /tmp/ZuKleineFotos 1296000. jpg-Dateien mit einer Auflösung von kleiner als 1440x900 = 1296000 Pixel werden dann nach /tmp/ZuKleineFotos/ verschoben. Dort kann man noch mal drüber schauen und ggf. löschen.

Obacht:

  • Das angegebene Verzeichnis wird nicht rekursiv durchsucht.
  • Es werden ausschließlich Dateien mit der Endung jpg verarztet (also nicht JPG, jpeg etc.).
  • Bilder mit exotischen Seitenverhältnissen werden u.U. ungewollt verschoben.
  • Ggf. werden gleichnamige Dateien im Zielverzeichnis überschrieben – ein bisschen Vorsicht ist also geboten. (Keine Rücksicht auf Backup-Verweigerer! ;-))

Wer will kann sicher noch ein paar Komfort-Funktionen ergänzen, die ich hier der Einfachheit halber ausgelassen habe. Wer alle seine Bilder korrekt gedreht hat, mag das Skript vielleicht dahingehend verändern, dass nur die Bildbreite (identify -format '%w' $file) überprüft wird.