Mein Nautilus-Scriptversuch

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

Similar Posts:

Schreibe einen Kommentar