So jetzt wirds richtig offtopic, ich habe mal mein Bilderverkleinerungsskript angepasst, vielleicht kann das ja mal jemand hier gebrauchen.
Dicke Warnung!! Das Skript überschreibt alle Dateien inklusive Unterordner des aktiven Ordners (da wo das Skript ausgeführt wird)!! Also nur mit einer Kopie des ganzen Ordners arbeiten.
Das Skript checkt ob die Datei kleiner als 150kb ist und wenn ja verkleinert es das Bild so, dass die längste Seite maximal 800px groß ist. Bilder die eine größere Auflösung haben und kleiner als 150kb sind fallen demensprechend durchs Raster (müsste ich mal irgendwann mal verbessern, kommt aber selten vor). Aus Gründen der Privatsphäre werden sämtliche Exif-Daten und die Vorschau gelöscht und der Dateiname durch einen Zufallsnamen ersetzt. Das Dateisystemdatum wird auf die Zeit gesetzt, an dem das Skript läuft.
Das ganze ist natürlich ziemlich quick and dirty, könnte man deutlich besser machen (ist schon ne Weile her, als ich das zusammengehackt habe). Aber solange es läuft und keiner Dateinamen hat, die mit einem "-" anfangen, sollte es passen.
Benötigt wird image-magick, bash und jhead. Unnötig zu erwähnen, dass das Skript auf einem nicht-Unix kompatiblen Betriebssystem nur mit Umwegen läuft.
https://zerobin.net/?5cbc955c1c42f140#bJkc8o+R34EmulMMsdyfR2wE2Mh0wpc4RmRIneMBnV0=#!/bin/bash
maxdim=800 #maximum dimension of picuture
maxfilesize=150 #maximum filesize in kb (if larger it is resized)
default_quality=75 #default quality of pictures
echo " /-------------------------------------\\"
echo "( Picture resizer using convert by uiop )"
echo " \\-------------------------------------/"
echo ""
echo "-- Maximum dimension of pictures (doesn't matter if width or height): $maxdim"
echo "-- Maximum filesize: $maxfilesize kb. If larger it is recompressed with maximum dimension"
echo "-- Jpg-Quality: $default_quality"
echo ""
echo "!!! WARNING !!! This will overwrite the original pictures of the current directory and all subdirectories. Use on own risk"
echo "Do you want to continue(y,n)?"
read TASTE
if [ $TASTE == y ]
then
find . \( -name "*.jpg" -or -name "*.JPG" \) -print0 -type f | while read -d $'\0' filename;
do
echo "processing" "$filename"
quality=$default_quality
if [ $(du -k "$filename" | cut -f1) -ge $maxfilesize ]
then
echo "Original filesize =" $(du -k "$filename" | cut -f1) " kb"
convert "$filename" -resize "$maxdim x $maxdim >" -quality "$quality" "$filename"
mogrify -strip "$filename"
echo "Target filesize =" $(du -k "$filename" | cut -f1) " kb"
else
echo "File skipped, already small enough"
fi
jhead -purejpg "$filename"
mv "$filename" "$RANDOM".jpg
done
else
echo "Operation cancelled"
fi