|
Feb
20
|
Was macht man, wenn man Samstag morgen um sechs aufwacht und nichts im Fernsehen kommt? Richtig, man schreibt ein ein Nautilus-Script.
Und zwar für folgendes Problem: Wenn ich hier ein Bild einstelle, skaliere ich es vorher auf eine Breite von 640 Pixeln. Zunächst um das Layout nicht zu zerhauen, aber auch, um Bandbreite und Speicherplatz zu schonen. Und bei dem WordPress-internen Scaler kommen immer merkwürdig unrunde Werte heraus, die meinem monkartigen Vorstellungen widersprechen.
Und da es ja eine ganz gute Fingerübung darstellt, kann man so etwas auch mal selbst schreiben. Ein Script, dass ein Bild ggf. dreht und auf eine Breite von 640 Pixeln skaliert.
Im Nachhinein darauf geschaut, merke ich deutlich, dass es Samstag früh um sechs war, als ich es geschrieben habe. Irgendwann werde ich es mal etwas hübscher und vor allem effizienter gestalten, bis dahin können sich andere daran versuchen. Das Script gibt es nach dem Klick.
Zum Ausprobieren den folgenden Inhalt in eine Datei in ~/.gnome2/nautilus-scripts kopieren und die Datei ausführbar machen. Die Pakte zenity und imagemagick müssen installiert sein.
#!/bin/bash
# Versuch: Bilder rotieren und auf Breite 640 skalieren
# Braucht bash, zenity und imagemagick
#
# white-rabbit(at)horst-working.de
#
for arg do
name=${arg%\.[a-z][a-z][a-z]}
endung=${arg/*./}
#Dialog Rotation
if ! rotation=$(zenity --list --text "Soll das Bild gedreht werden?" --title $name --radiolist --column "" --column "Drehen" true "Nicht drehen" false "Im Uhrzeigersinn drehen" false "Gegen den Uhrzeigersinn drehen"); then
zenity --error --text "Script wurde abgebrochen" --title "Abbruch"
exit;
else
case $rotation in
"Nicht drehen") grad="0";;
"Im Uhrzeigersinn drehen") grad="90" ;;
"Gegen den Uhrzeigersinn drehen") grad="270";;
*) grad ="0";;
esac
#Dialog Dateiname
if ! zenity --question --text "Soll die Datei umbenannt werden? \nDer Name wird um \"_640\" ergänzt." --title $name; then
neuername=$name
else
if ! neuername=$(zenity --entry --text "Wie soll die Datei heißen?\nBitte keine Leerzeichen verwenden." --title $name); then
zenity --warning --title $name --text "Der Name "$name" wird beibehalten."
neuername=$name
fi
fi
fi
komplett=$neuername"_640."$endung
temp="/tmp/"$komplett
ziel=$HOME"/Desktop/"$komplett
#Konvertieren
(echo 10
echo "# Bild wird gedreht"
convert $arg -rotate $grad $temp
echo 50
echo "# Bild wird skaliert"
convert $temp -resize '640' $ziel
echo 90
echo "# Temporäredateien werden gelöscht"
rm $temp
echo 100) |
if ! zenity --progress --title $komplett --text "Bearbeitung wird vorbereitet" --percentage 0 --auto-close --pulsate; then
zenity --error --text "Script wurde abgebrochen" --title "Abbruch"
rm $temp
rm $ziel
exit;
else
#Erfolg!
zenity --info --text "Das Bild "$arg" wurde um "$grad" Grad gedreht, auf 640 Pixel Breite skaliert und auf dem Desktop als "$komplett" abgelegt."
fi
done
Letzte Kommentare