Mac Tool zum finden "defekter" Bilder

RolandR88

Lieutenant
Registriert
Jan. 2007
Beiträge
765
Hallo Leute,
ich habe eine Sammlung von ca. 30k Bildern. Diese sind mit dem AMOK Exif Sorter in Ordner sortiert und haben eine gewisse Namenskonvention. Ab und zu finde ich alte Speichermedien und füge die Daten hinzu, lasse sie benennen und verschieben und lösche dann Duplikate bzw. ähnliche Bilder die keinen Mehrwert bieten mit dem PhotoSweeper X.
Nun die Frage: Ich entdecke immer wieder korrumpierte Bilder - warum auch immer. Entweder lassen sie sich garnicht anzeigen oder haben graue Bereiche (habe Bild vertikal nach unten grau).
Wie kann ich unter Mac OS diese Bilder finden und aussortieren? Ich habe es bereits im Terminal mit sip versucht, aber keine Erfolg damit.
Vielen Dank
 
Format?
RolandR88 schrieb:
Ich habe es bereits im Terminal mit sip versucht, aber keine Erfolg damit.
this is the way

Bash:
# Pfade anpassen
IN="/Pfad/zu/Deinen/Bildern (vermutluch ~/Pictures/....."
OUT="$HOME/Desktop/corrupt_scan_$(date +%Y%m%d_%H%M%S)"
mkdir -p "$OUT"
TMPDIR="$(mktemp -d)"

# Dateitypen nach Bedarf ergänzen
find "$IN" -type f \( \
  -iname "*.jpg" -o -iname "*.jpeg" -o -iname "*.png" -o -iname "*.tif" -o -iname "*.tiff" -o -iname "*.heic" \
\) -print0 | while IFS= read -r -d '' f; do
  # Thumbnail decode + re-encode (erzwingt Dekodierung)
  if ! sips -Z 64 "$f" -o "$TMPDIR/thumb.jpg" >/dev/null 2>&1; then
    printf "%s\n" "$f" >> "$OUT/bad_sips.txt"
  fi
done

echo "Fertig. Liste: $OUT/bad_images.txt"

grob so mit sip

oder
(imagemagick bitte mit brew vorher isntallieren)

Bash:
IN="/Pfad/zu/Deinen/Bildern (vermutluch ~/Pictures/....."
OUT="$HOME/Desktop/corrupt_scan_$(date +%Y%m%d_%H%M%S)"
mkdir -p "$OUT"
TMPDIR="$(mktemp -d)"
find "$IN" -type f \( -iname "*.jpg" -o -iname "*.jpeg" -o -iname "*.png" -o -iname "*.tif" -o -iname "*.tiff" -o -iname "*.heic" \) -print0 \
| while IFS= read -r -d '' f; do
  if ! magick identify -regard-warnings "$f" >/dev/null 2>&1; then
    printf "%s\n" "$f"
  fi
done > "$OUT/bad_images.txt"

oder, wenn es um jpegs geht:
Bash:
find "$IN" -type f \( -iname "*.jpg" -o -iname "*.jpeg" \) -print0 \
| xargs -0 -n 200 jpeginfo -c 2>/dev/null \
| awk '/ERROR|WARNING/ {print $NF}' \
| sort -u > "$OUT/bad_jpeginfo.txt"

echo "Liste: $OUT/bad_images.txt"
 
  • Gefällt mir
Reaktionen: RolandR88
Zurück
Oben