Hugo ignoriert beim Erstellen von Zwischengrößen von Bildern die Metadaten (Exif). Das führt dazu, dass Bilder auf der Seite liegen, die eigentlich hochkant fotografiert wurden. Dazu hatte ich bereits einen Blogbeitrag geschrieben, siehe hier.
Heute habe ich dafür mal ein Bash-Script erstellt, um in einem Verzeichnis rekursiv alle Bilder zu finden, in denen die Rotation nur in den Exif-Daten enthalten ist, die aber auf Dateiebene nicht ausgerichtet sind.
Diese Dateien werden dann mit dem Tool mogrify
korrekt ausgerichtet, die Orientierung aus Exif entfernt und die Dateien gespeichert. mogrify
ist im Paket ImageMagick enthalten.
Das Script
Da ich es bevorzuge, dass mir ein Script mitteilt, was es tut, gibt es eine Ausgabe für jede Datei, ob es Exifdaten zur Rotation gibt. Damit das besser lesbar ist, werden Zeilen ohne Match eingerückt.
Hier das Shell-Script (Bash):
#!/bin/bash
SEARCH_IN_PATH="${1}"
cd "${SEARCH_IN_PATH}"
shopt -s globstar
for file in **/*; do
#echo "${file}"
if [ -f "${file}" ]; then
filename=$(basename "${file}")
extension="${filename##*.}"
if [[ ${extension} =~ (webp|gif|jpg|jpeg|png) ]]; then
exiftool "${file}" | grep "^Orientation" | grep "Rotate" >/dev/null
if [ $? = 0 ]; then
echo "Image found, mogrifiy: ${file}"
mogrify -auto-orient "${file}"
else
echo -e "\tNo exif orientation: ${file}"
fi
fi
fi
done
Vorsicht beim Ausführen von Shellkommandos via Copy & Paste
Man sollte Shellkommandos aus Anleitungen, die in einem Browser angezeigt werden, grundsätzlich nicht einfach ungeprüft in die Shell einfügen und ausführen.
Denn es ist möglich, Teile des Codes z. B. via CSS zu verstecken. Diese Teile werden aber trotzdem kopiert und landen auch in der Shell, wo sie ausgeführt werden.
Besser ist es, die Kommandos erst in einen lokalen Texteditor einzufügen und dort zu prüfen, bevor man die ausführt.
Kopiere doch mal dieses Beispiel und füge es – in die Shell (!NEIN) – in einen Editor ein:
echo "Befehl 1";
echo "Befehl 3"
Für alte Blogbeiträge
Somit reicht ein Aufruf auf der Konsole, um alle Bilder in meinem Blog zu “reparieren”.
Beispielaufruf für meinen Blog
$ hugo_find_fix_orientation.sh blog/posts/2022/2022-09-01-fotos-der-letzten-tage/
No exif orientation: cover.jpg
Image found, mogrifiy: images/2022-01-19-hachelallee-1.jpg
No exif orientation: images/2022-01-19-hachelallee-2.jpg
No exif orientation: images/2022-01-fahrrad-zob-pforzheim.jpg
No exif orientation: images/2022-01-schwann-radstation.jpg
No exif orientation: images/2022-01-wald-mit-sonne.jpg
[…]
Insgesamt 25 Dateien wurden so gefunden und korrekt ausgerichtet.
Beim nächsten Rendern des Blogs erkennt Hugo die geänderten Bilddateien und erstellt dann automatisch neue Zwischengrößen daraus.
Für neue Blogbeiträge
Das Script kann ich jetzt auch verwenden, um Bilder neuer Blogbeiträge automatisch korrekt auszurichten. Sobald ein Blogbeitrag fertig ist, lasse ich das Script einmalig über das Page Bundle
laufen.
Kommentare
Bisher gibt es hier keine Kommentare.
Kommentar oder Anmerkung für diesen Blogbeitrag
Öffentlicher Kommentar per E-Mail: Hier klicken
Nicht öffentliche Anmerkung per E-Mail: Hier klicken
Sonstige Kontaktaufnahme: Kontakt