Heute morgen, als ich das Fotoarchiv meines Bruders auf dem Eigenbau-NAS Server durchsucht habe, ist mir aufgefallen, dass die Bilddateien eine Auflösung von 5184 x 3456 Pixeln hatten. Kein Wunder, dass die Vorschaubilder im Filebrowser so langsam geladen wurden, schließlich mussten große Datenmengen über das Netzwerk übertragen werden. Aber habe ich überhaupt etwas von der hohen Auflösung? Die großen Bilddateien brauchen nur sehr viel länger, um übertragen zu werden und benötigen auch entsprechend viel Platz auf Speicherkarten oder den Serverfestplatten. Ein einziges Bild kommt schon mal auf 6-9 MB, dass summiert sich bei größeren Sammlungen mit tausenden Fotos.
Um zu sehen, ob sich die Bilddateien schmerzlos in ihrer Auflösung verkleinern lassen, habe ich mit ein paar Bilder aus der Sammlung herausgepickt und je eine Version auf eine maximale Auflösung von 2500 Pixeln je Dimension verkleinert. Ein bemerkenswerter Unterschied war auf meinen FullHD Bildschirmen nicht zu erkennen. Die Dateigröße war gleich viel geringer und die Qualität, mit der man die Fotos betrachten konnte, dieselbe. Natürlich muss man beim Vergrößern von Fotos Abstriche machen. Wenn man sich aber ansieht, dass beim Vergrößern der Originale nicht sehr viel mehr zu erkennen ist (abgesehen von vergrößertem Rauschen ;) ), relativiert sich das ganze schon wieder. Ich speichere also gerade Daten, die für mich im Normalfall keinen Nutzen haben. Für mich stand also fest: Die Dateien werden verkleinert.
Wie verkleinert man tausende Fotos am einfachsten?
Mit zwei kleinen Tools: “find”, um passende Bilddateien (auch rekursiv in Unterordnern) ausfindig zu machen und das “mogrify”-Kommando aus dem “imagemagick” Paket, um die Bilddateien zu skalieren. Das folgende Kommando habe ich mir zusammengebaut:
find . -name "*.JPG" -exec mogrify -resize '2500x2500>' {} \;
Es wird in dem Ordner ausgeführt, in dem sich die zu verkleinernden Fotos mit der Dateiendung .JPG befinden. Andere Dateien werden nicht verarbeitet, ebenso keine Bilder, die kleiner als 2500 x 2500 Pixel groß sind. Alle anderen Dateien, die diese Dimensionen überschreiten, werden so skaliert, dass die angegebenen Dimensionen nicht mehr überschritten werden. Die Skalierung erfolgt natürlich proportional. Verzerrungen treten nicht auf.
Bevor das Kommando aufgerufen wird, sollte eine Sicherung des Original Ordners gemacht werden, denn die Originaldateien werden überschrieben und sind danach nicht mehr vorhanden.
Den Befehl habe ich direkt auf dem Server in einer Screen-Session ausgeführt, sodass ich meine SSH-Verbindung trennen und später ggf. wieder aufnehmen kann. Der Server verarbeitet die Dateien ohne weiteres Zutun im Hintergrund.
Durch die Skalierung auf eine vernünftige Größe habe ich eine Menge Speicher gespart: Die kleine Sammlung konnte ohne bedeutende Qualitätseinbußen von 20,6 GB auf 6.2 GB verkleinert werden und lädt im Filebrowser nun ein ganzes Stück schneller.
Update am 26.04.: Bevor sich noch mehr Leute aufregen weil ich die ach-so-wichtigen Fotos verkleinert habe und die ja jetzt völlig entstellt sind… ;) … natürlich habe ich auch noch die Originale. Die verkleinerte Version der Sammlung benutze ich für den Zugriff über das Netzwerk.