Skip to content

Skript: Bilder verkleinern und versenden (2. Update)

Unter Windows XP gibt es eine Funktion, dass man in der Explorer-Bilderansicht mehrere Bilder auswählen kann, dann links auf „In E-Mail versenden“ (oder so ähnlich) klickt und die Bilder werden automatisch verkleinert und in eine E-Mail gepackt. Vor kurzem sagte jemand, dies geht unter Windows so einfach und unter Linux ist das so umständlich mit den Standardmitteln. (Weswegen derjenige auch lieber Windows startet.)

Aus dem Grund habe ich ein Skript geschrieben, was genau diese Verkleinerung der Bilder mit Hilfe von ImageMagick vornimmt und dann mit dem Standardmailprogramm versendet. Thunderbird versendet. Ich habe leider nicht herausbekommen, ob es analog zu x-www-browser etwas für das Standard-Mailprogramm gibt. Wer das Skript für etwas anderes als Thunderbird nutzen will, muss es also ggf. noch anpassen.

#!/bin/bash
ALLFILES=""

# Zuerst alle Bilder verkleinern
for FILE in "$@"
do
    # Ersetze Leerzeichen durch Unterstriche
    BASENAME=`basename "$FILE" | sed 's/ /_/g'`
    echo "BASENAME: $BASENAME"
    rm -rf "/tmp/$BASENAME"
    convert -geometry 640x640 "$FILE" "/tmp/$BASENAME"
    ALLFILES+="--attach /tmp/$BASENAME "
done

# Nun die Bilder versenden.
echo "xdg-email $ALLFILES"
xdg-email $ALLFILES

Das Skript ist sehr einfach und iteriert über alle Argumente ($@). Im /tmp-Verzeichnis wird dann mittels convert eine kleinere Version abgespeichert, die eine Maximalbreite oder -höhe von 640 Pixel hat. Dies kann man nach Belieben anpassen, unter Windows ist dies so eingestellt. Alle Bilder werden dann in eine Liste ALLFILES gesteckt und mittels xdg-email (Standardmailprogramm) verschickt.

Weil das Skript noch nicht alles ist, kann man sich in den meisten Dateimanagern auch eine eigene Aktion definieren, die das Skript aufruft. Ich habe es unter ~/.config/Thunar/.resize abgespeichert und dann in Thunar über „Bearbeiten -> Benutzerdefinierte Aktionen“ ein neue Aktion mit folgenden Daten erstellt:

  • Name: Bilder verkleinern und versenden
  • Befehl: ~/.config/Thunar/.resize %F
  • Dateizuordnung: nur Bilddateien
Thunar-Aktion einrichten.

Trackbacks

Keine Trackbacks

Kommentare

Ansicht der Kommentare: Linear | Verschachtelt

postlet am :

Im Debian Alternatives System gibt es scheinbar keinen vordefinierten Eintrag für das Standard-E-Mail-Programm. Das wird von den einzelnen Desktopumgebungen dann über einen Dialog für die "Bevorzugten Anwendungen" eingerichtet.

Unter Xfce wird dafür beispielsweise libexo als Schnittstelle verwendet und kann über die exo-utils in der Befehlszeile angesprochen werden. Siehe dazu die Manpage von "exo-open". Um das dann unabhängig von der Desktopumgebung zu machen, kann man die xdg-utils verwenden, die ihre Befehle direkt an die einzelnen Befehle der jeweiligen Desktopumgebung weiterreichen (z.B. exo-open, gvfs-open, kde-open). Wird keine notwendige Konfiguration der Desktopumgebung gefunden, wird die eigene verwendet.

Um dein Script nur für Xfce einzusetzen müsste der Befehl am Ende lauten: exo-open mailto:?attach='$ALLFILES'

Über die xdg-utils entsprechend desktopunabhängig: xdg-email --attach '$ALLFILES'

Die kommaseparierte Liste dürfte dann allerdings entfallen.

Dee am :

Vielen Dank für die Ergänzung. Ich hatte mir den Quellcode von Thunars "sendtomail" angeschaut und dort auch den exo-Aufruf gefunden, aber bin nicht schlau daraus geworden, wie dies einzusetzen ist.

Ich habe das Skript korrigiert, es sieht nun viel schlanker aus.

DeKa am :

Hallo,

nutze LinuxMint-Debian mit Xfce.
Mit der Änderung des Skriptes funktioniert Icedove nicht mehr, vorher mit E-Mail Eintrag von Icedove schon.

Warum nicht?

Dee am :

Was meldet denn ein einfaches "xdg-email" auf der Konsole? Und was liefert ein "exo-open mailto:"?

tobi am :

Vielen Dank für das gelungene Skript!
Das ist für den Linux Anfänger wirklich hilfreich.

DeKa am :

Beide Befehle öffnen Icedove, aber nur wenn dieser auch gestartet ist.
Das vorherige Skript startet auch Icedove.

Dee am :

Eine Konsolenausgabe hilft bei so etwas immer mehr. Die Aussage "Icdeove öffnet nicht", hilft nicht viel weiter. Bei mir ist es so, dass ich zwar die Ausgabe: „Error: No running window found“ bekomme, dann öffnet sich aber dennoch ein neues Thunderbird-Fenster.

Stefan am :

würde bei diesem problem nicht auch diese erweiterung für nautilus weiterhelfeb?
http://wiki.ubuntuusers.de/MailPictures

DeKa am :

also:

:~$ exo-open mailto:
:~$ enigmail.js: Registered components
mimeVerify.jsm: module initialized
AddressbooksSynchronizer 1.0.4 appName=Icedove appVersion=17.0
noDirProp=true haveABManager=true

:~$ xdg-email
:~$ enigmail.js: Registered components
mimeVerify.jsm: module initialized

öffnen den Icedove.
Das Script arbeitet nur nicht wirklich, es passiert nichts.
Das erst vorherige Script komprimiert und sendet den Bildanhang auch.

Dee am :

Für Nautilus ja. Da ich Xubuntu mit Thunar nutze (siehe oben) eher nicht. Daher habe ich die allgemeine Möglichkeit per allgemeinem Skript beschrieben. Die geht dann in jedem Dateimanager, der Aktionen beherrscht.

Zusätzlich (so seltsam es klingen mag): Das wären für manche Nutzer viel zu viele Optionen, die man einstellen kann. Ich glaube bei Windows gibt es als nur Einstellung "klein, mittel, groß" für die Verkleinerung. Alles, was mehr ist als das, führte bei dem Testsubjekt ;) zu Verwirrung. Kann man aber natürlich auch in dem Skript z.B. mit Zenity noch nachbauen.

Dee am :

Okay, das verstehe ich noch nicht. "xdg-email" öffnet Icedove, egal ob es offen ist, oder nicht? Ist das korrekt? Weil oben schriebst Du, dass Icedove sich nur öffnet, wenn es schon offen ist.

Was passiert denn, wenn Du das Skript einfach mal händisch ausführst? (Am besten mit existierenden Bildern testen!) Also was ist die Konsolenausgabe und was passiert auf Deinem Bildschirm?

$ .resize bilda.png bildb.png

DeKa am :

Hallo Dee,

Fehler gefunden.
Das Script arbeitet nicht mit JPG (JPEG) Dateien, mit PNG sehr wohl.

Merkwürdig, JPG ist zwar schon eine komprimierte Datei, aber wenn man es weiß kann man es umgehen und PNG benutzen

Dee am :

Du bist aber wirklich sehr zurückhaltend und geheimnisvoll, was Fehlerausgaben angeht, oder? Naja, bei mir geht das Skript auch mit normalen JPGs, die als "JPEG-Bild" in Thunar angezeigt werden. Es geht mit allen Bildern, die convert konvertieren kann. Wenn Deine convert-Installation mit JPEG nicht umgehen kann, liegt das vermutlich an Debian.

DeKa am :

was heißt sparsam mit Infos?
Konsole zeigt nichts weiter an.
Fehler liegt nicht an den JPG Dateien sondern wohl nur an meiner einen die ich ausprobiert habe.
Aufbau der JPG-Datei:
http://www.myimg.de/?img=Lstsichnichtkomprimiere60067.png

Warum es mit dem Bild nicht funktioniert kann ich nur vermuten, eventuell zu groß, Auflösung nicht änderbar.

Finde es jedenfalls toll das du dieses Script auch anderen zugänglich machst, auch wenn vereinzelt zusätzliche Fehler auftauchen die nicht an deinem Script liegen sondern auf der Anwenderseite.

Gruß DeKa

Dee am :

Wird denn das verkleinert Bild unter /tmp/ erstellt? Wenn nicht, dann liegt es ja an convert. Dann wäre die Konsolenausgabe von convert hilfreich, die hoffentlich etwas meldet.

Und wenn das Bild existiert, wäre noch die Frage, was bei einem manuellen Aufruf von "xdg-email --attach /tmp/bild.jpg" passiert.

Am besten einfach mal versuchen jede Zeile für sich durchgehen und schauen, was das Ergebnis ist. Manche Aufrufe haben auch Optionen, um sie gesprächiger zu machen.

Und ja, wahrscheinlich wird es immer Fälle geben, wo das Skript versagt. Z.B. wenn ImageMagick nicht installiert ist. Da gibt es keine Fehlermeldung, sondern es passiert einfach nichts. Das könnte man noch verbessern.

DeKa am :

Die unendliche Geschichte hat ein Ende:
Das Bild ist noch aus Windows-Tagen.

Was fällt die dabei auf "bennett und ich.jpg"

Richtig, die Leerzeichen, Linux beendet dann die Weiterarbeit, da es diese Datei nicht gibt.
Habe Unterstriche eingefügt und es funktioniert.

Man, ich werde glaube ich alt ;-)

Dee am :

Wow, in der Tat hat xdg-email aus dem Skript heraus Probleme mit Leerzeichen. Wenn man die Zeile

xdg-email --attach "/tmp/bild a.png"

manuell eingibt, klappt alles. Der Aufruf

.resize "bild a.png"

aber scheitert mit der Meldung:

xdg-email: file '"/tmp/bild' does not exist

Und ich habe keine Ahnung, wo ich noch Anführungszeichen setzen soll, damit xdg-email dies versteht. Mit exo-open habe ich es hinbekommen und mit dem direkten Aufruf von Thunderbird/Icedove klappt es auch.

Ggf. hat ja noch jemand eine Idee.

Jane Doe am :

Hi :)

Ein Eintrag in http://wiki.ubuntuusers.de/Thunar/Benutzerdefinierte_Aktionen wäre eine feine Sache. :)

LG

Dee am :

Gesagt und getan: http://wiki.ubuntuusers.de/Thunar/Benutzerdefinierte_Aktionen#Bilder-verkleinern-und-versenden (Und dabei auch gleich die Lösung mit den Leerzeichen eingebaut.)

Dee am :

So, habe das Skript nun so umgebaut, dass es auch mit Leerzeichen im Dateinamen geht. Okay, effektiv ersetze ich diese einfach vor dem Verschicken durch Unterstriche, aber so geht es zumindest. ^^

DeKa am :

Super :-)

Danke Dee

Wünsche Dir ein frohes und weiterhin ein kreatives neues Jahr ;-)

Jane Doe am :

Super. :) Danke. :D

Kommentar schreiben

Die angegebene E-Mail-Adresse wird nicht dargestellt, sondern nur für eventuelle Benachrichtigungen verwendet.
Formular-Optionen