Konqueror - Bild verkleinern und per Mail senden auf Rechtsklick

K

Knallkopp

Jungspund
Tach!

Ich hab mal wieder ein Problem:
ich möchte im Konqueror per Rechtsklick ein/mehrere Bilder als Mailanhang im Thunderbird senden. Habs jetzt 5 Stunden versucht...
Per Rechtsklick eine Shell aufrufen ist kein Problem.
Code:
[Desktop Entry]
Actions=Email
Encoding=UTF-8
ServiceTypes=all/all
Actions=Email

[Desktop Action Email]
Name=Send-convert file(s) with Thunderbird
Exec=/opt/kde3/bin/email-convert-and-send.sh %U
Icon=thunderbird
Per Shell den Anhang unbearbeitet schicken auch nicht:
Code:
#!/bin/bash
stringa=""
while [ "$1" != "" ]; do
    stringa="${stringa}file://$1,"
    shift
done
thunderbird -compose "attachment='$stringa'"
Doch jetzt müsste noch sowas wie
Code:
convert $i -geometry 50% $(basename $i .jpg)_klein.jpg
kommen, wobei die verkleinerten Bilder irgendwie nach /tmp müssten. Und dafür bin ich zu, naja...
Kann mir da jemand unter die Arme greifen?

Gruß, Knallkopp
 
Hallo,

es wäre vielleicht besser gewesen, den Thread in das Shell-Scripting-Unterforum (was für ein Wort ;)) zu packen.
Code:
#!/bin/bash
FILES=""
TMPDIR=$(mktemp -p /tmp -d verzeichnis.XXXXXX)
while [ "$1" != "" ]; do
    if [ -f ${$1} ]; then
        TMPFILE=$(mktemp -p $TMPDIR bild.XXXXXX).jpg
        convert ${$1} -geometry 50% $TMPFILE && \
        FILES="${FILES}file://$TMPFILE,"
        shift
    fi
done

thunderbird -compose "attachment='$FILES'"

if [ ! $(ps -C thunderbird -o comm=) ]; then
    rm -Rf $TMPDIR
fi

Ungetestet.
Auf Dateinamenerweiterungen und so Zeug müsstest du wohl auch noch prüfen. Ich weiß nicht, ob sich Thunderbird als Prozess in den Hintergrund absetzt. Wenn ja, müsstest du das temporäre Verzeichnis irgendwie separat entfernen, wenn /tmp nicht sowieso bei dir geleert wird oder im Ram liegt.

Eine andere Idee wäre es vielleicht, auf die Thumbnails in ~/.thumbnails zuzugreifen. Würde vielleicht etwas Prozessorlast sparen. Weiß aber nicht, was du vorhast und ob man da per CLI dran kommt. Von daher auch egal :)

cu

EDIT1: Weil das Servicemenü auch bei Suchanfragen, z.B. über kfind funktioniert, können identische Dateinamen (aus unterschiedlichen Verzeichnissen) auftauchen. Um dadurch entstehende Fehler zu vermeiden, wird der Dateiname $TMPFILE wird hier auch temporär erzeugt.

EDIT2: Ich sehe gerade, dass meine Annahme aus EDIT1 unter KDE4 (4.2.4) nicht stimmt. Da gibt es das Menü nicht mehr. Keine Ahnung, ob Bug oder Feature...
 
Zuletzt bearbeitet:
Code:
#!/bin/bash
stringa=""
while [ "$1" != "" ]; do
    stringa="${stringa}file://$1,"
    shift
done
thunderbird -compose "attachment=[B][COLOR="Red"]'[/COLOR][/B]$stringa[B][COLOR="#ff0000"]'[/COLOR][/B]"
+

Code:
thunderbird -compose "attachment=[B][COLOR="#ff0000"]'[/COLOR][/B]$FILES[B][COLOR="#ff0000"]'[/COLOR][/B]"

Single quotes und Variablenexpansion, da war doch was, oder?
 
Danke bis hierher!
Es funktioniert zwar noch nicht, doch ich hoffe dass ichs hinbekomme.
.
.
.
EDIT (autom. Beitragszusammenführung) :
.

So, jetzt:
Code:
#!/bin/bash
stringa=""
TMPDIR=$(mktemp -p /tmp -d verzeichnis.XXXXXX)
while [ "$1" != "" ]; do
	stringa="$1"
	cp $stringa $TMPDIR/
	shift
done
cd $TMPDIR
options=`kdialog --radiolist "Kompression wählen" 1 "keine" off 2 "75%" off 3 "50%" on 4 "25%" off`
stringa=""
for i in $(ls *.{jpg,jpeg,JPG,JPEG,png,PNG})
	do
	case "$options" in 
	1) ;;
	2) convert -geometry 75% $i $TMPDIR/$i;;
	3) convert -geometry 50% $i $TMPDIR/$i;;
	4) convert -geometry 25% $i $TMPDIR/$i;;
	*) convert -geometry 50% $i $TMPDIR/$i;;
	esac
	stringa="${stringa}file://$TMPDIR/$i,"
done
#nicht-jpg und png dateien anhängen
for i in $(ls --ignore="*.{jpg,jpeg,JPG,JPEG,png,PNG}")
do
	stringa="${stringa}file://$TMPDIR/$i,"
done
thunderbird -compose "attachment='$stringa'"
#kmail --attach "$stringa"
if [ ! $(ps -C thunderbird -o comm=) ]; then
    rm -Rf $TMPDIR
fi
done
Vielen Dank für die Hilfe!
 
Zuletzt bearbeitet:
Tach zusammen,

nachdem selbst ich nun bei KDE4 angekommen bin, funktionierts nicht mehr.
Die Bilder werden bearbeitet und in den temporären Ordner geschrieben, jedoch meldet TB folgendes:
"Ein Fehler trat beim Öffnen eines Fensters zum Verfassen von Nachrichten auf. Bitte versuchen Sie es nochmals."
Das unbearbeitete Versenden über eine .desktop-Datei funktioniert aber.

Code:
Code:
#!/bin/bash
stringa=""
TMPDIR=$(mktemp -p /tmp -d verzeichnis.XXXXXX)
while [ "$1" != "" ]; do
	stringa="$1"
	cp $stringa $TMPDIR/
	shift
done
cd $TMPDIR
options=`kdialog --radiolist "Kompression wählen" 1 "keine" off 2 "75%" off 3 "50%" on 4 "25%" off`
stringa=""
for i in $(ls *.{jpg,jpeg,JPG,JPEG,png,PNG})
	do
	case "$options" in 
	1) ;;
	2) convert -geometry 75% $i $TMPDIR/$i;;
	3) convert -geometry 50% $i $TMPDIR/$i;;
	4) convert -geometry 25% $i $TMPDIR/$i;;
	*) convert -geometry 50% $i $TMPDIR/$i;;
	esac
	stringa="${stringa}file://$TMPDIR/$i,"
done
for i in $(ls --ignore="*.{jpg,jpeg,JPG,JPEG,png,PNG}")
do
	stringa="${stringa}file://$TMPDIR/$i,"
done
thunderbird -compose "attachment='$stringa'"

if [ ! $(ps -C thunderbird -o comm=) ]; then
    rm -Rf $TMPDIR
fi
done

Danke schon im Voraus!
 
Nochmal ich.

Das Problem scheint das Komma am Ende von stringa zu sein, wenn keine Datei mehr folgt. Also müsste dieses Komma nur dann gesetzt werden, wenn noch eine Datei folgt. Wie geht denn im Skripting eine if i=letztes Bild dann kein Komma?
 
Hier die Lösung:
Code:
#!/bin/bash
stringa=""
TMPDIR=$(mktemp -p /tmp -d verzeichnis.XXXXXX)
while [ "$1" != "" ]; do
	stringa="$1"
	cp $stringa $TMPDIR/
	shift
done
cd $TMPDIR
stringn=`find . -type f | wc -l`
options=`kdialog --radiolist "Kompression wählen" 1 "keine" off 2 "75%" off 3 "50%" on 4 "25%" off`
stringa=""
stringn1=0
for i in $(ls *.{jpg,jpeg,JPG,JPEG,png,PNG})
	do
	case "$options" in 
	1) ;;
	2) convert -geometry 75% $i $TMPDIR/$i;;
	3) convert -geometry 50% $i $TMPDIR/$i;;
	4) convert -geometry 25% $i $TMPDIR/$i;;
	*) convert -geometry 50% $i $TMPDIR/$i;;
	esac
stringn1=$((stringn1+1))
	if [ "$stringn1" -lt "$stringn" ]; then
	stringa="${stringa}file://$TMPDIR/$i,"; else 
	stringa="${stringa}file://$TMPDIR/$i"; fi
done

thunderbird -compose "attachment='$stringa'"
if [ ! $(ps -C thunderbird -o comm=) ]; then
    rm -Rf $TMPDIR
fi
done
 

Ähnliche Themen

Servicemenu ruft Shellskript nicht auf

Apache zu langsam ?

Meine Distri spielt verrückt !

Zurück
Oben