staging.inyokaproject.org

KDE Servicemenü "pic_convert" Bilder umwandeln in: jpg, png, webp, bmp, tiff, svg

Status: Ungelöst | Ubuntu-Version: Kubuntu 21.04 (Hirsute Hippo)
Antworten |

trollsportverein

Avatar von trollsportverein

Anmeldungsdatum:
21. Oktober 2010

Beiträge: 2627

Bitte weitergehen, neue erweiterte Version im weiteren Verlauf vom Thread.

Folgende Voraussetzungen braucht es: KDE, Darktable (nur für das Icon, kann man selbst ändern), ImageMagick, Inkscape (für die svg Erzeugung), libnotfy-bin (für die Benachrichtiung Pop-ups)

Unter der Voraussetzung das KDE bereits installiert ist, wie etwa bei Kubuntu:

  • sudo apt-get install darktable imagemagick inkscape ibnotify-bin

Sollte eines der Pakete bereits installiert sein, wird apt-get das melden und das Paket dann nicht noch einmal installieren.

Hier nun der Inhalt vom KDE Servicemenü "pic_convert":

[Desktop Entry]
Type=Service
ServiceTypes=KonqPopupMenu/Plugin
MimeType=image/bmp;image/jpeg;image/png;image/gif;image/webp;image/tiff;image/svg+xml;
Actions=convert_to_jpg;convert_to_png;convert_to_webp;convert_to_bmp;convert_to_tiff;convert_to_svg
X-KDE-Submenu=Picture convert to jpg, png, webp. bmp, tiff, svg ==>
X-KDE-Submenu[de]=Bild umwandeln zu jpg, png, webp. bmp, tiff, svg ==>
Icon=darktable

[Desktop Action convert_to_jpg]
Icon=darktable
Name=convert to jpg
Name[de]=umwandeln zu jpg
Exec=[ -f "`echo "%f" | sed -e s/[^.]*$/jpg/I`" ] && notify-send -i window-close.png "STOP! `echo "%f" | sed -e s/[^.]*$/jpg/I | xargs basename` File exists!" ; [ ! -f "`echo "%f" | sed -e s/[^.]*$/jpg/I`" ] && convert %f "`echo "%f" | sed -e s/[^.]*$/jpg/I`" && notify-send -i dialog-ok-apply.png "Ready! :-)" "Picture to jpg: `echo "%f" | sed -e s/[^.]*$/jpg/I | xargs basename` Ready!"

[Desktop Action convert_to_png]
Icon=darktable
Name=convert to png
Name[de]=umwandeln zu png
Exec=[ -f "`echo "%f" | sed -e s/[^.]*$/png/I`" ] && notify-send -i window-close.png "STOP! `echo "%f" | sed -e s/[^.]*$/png/I | xargs basename` File exists!" ; [ ! -f "`echo "%f" | sed -e s/[^.]*$/png/I`" ] && convert %f "`echo "%f" | sed -e s/[^.]*$/png/I`" && notify-send -i dialog-ok-apply.png "Ready! :-)" "Picture to png: `echo "%f" | sed -e s/[^.]*$/png/I | xargs basename` Ready!"

[Desktop Action convert_to_webp]
Icon=darktable
Name=convert to webp
Name[de]=umwandeln zu webp
Exec=[ -f "`echo "%f" | sed -e s/[^.]*$/webp/I`" ] && notify-send -i window-close.png "STOP! `echo "%f" | sed -e s/[^.]*$/webm/I | xargs basename` File exists!" ; [ ! -f "`echo "%f" | sed -e s/[^.]*$/webp/I`" ] && convert %f "`echo "%f" | sed -e s/[^.]*$/webp/I`" && notify-send -i dialog-ok-apply.png "Ready! :-)" "Picture to png: `echo "%f" | sed -e s/[^.]*$/webp/I | xargs basename` Ready!"


[Desktop Action convert_to_bmp]
Icon=darktable
Name=convert to bmp
Name[de]=umwandeln zu bmp
Exec=[ -f "`echo "%f" | sed -e s/[^.]*$/bmp/I`" ] && notify-send -i window-close.png "STOP! `echo "%f" | sed -e s/[^.]*$/bmp/I | xargs basename` File exists!" ; [ ! -f "`echo "%f" | sed -e s/[^.]*$/bmp/I`" ] && convert %f "`echo "%f" | sed -e s/[^.]*$/bmp/I`" && notify-send -i dialog-ok-apply.png "Ready! :-)" "Picture to bmp: `echo "%f" | sed -e s/[^.]*$/bmp/I | xargs basename` Ready!"

[Desktop Action convert_to_tiff]
Icon=darktable
Name=umwandeln to tiff
Name[de]=umwandeln zu tiff
Exec=[ -f "`echo "%f" | sed -e s/[^.]*$/tiff/I`" ] && notify-send -i window-close.png "STOP! `echo "%f" | sed -e s/[^.]*$/tiff/I | xargs basename` File exists!" ; [ ! -f "`echo "%f" | sed -e s/[^.]*$/tiff/I`" ] && convert %f "`echo "%f" | sed -e s/[^.]*$/tiff/I`" && notify-send -i dialog-ok-apply.png "Ready! :-)" "Picture to tiff: `echo "%f" | sed -e s/[^.]*$/tiff/I | xargs basename` Ready!"


[Desktop Action convert_to_svg]
Icon=darktable
Name=umwandeln to svg
Name[de]=umwandeln zu svg
Exec=[ -f "`echo "%f" | sed -e s/[^.]*$/svg/I`" ] && notify-send -i window-close.png "STOP! `echo "%f" | sed -e s/[^.]*$/svg/I | xargs basename` File exists!" ; [ ! -f "`echo "%f" | sed -e s/[^.]*$/svg/I`" ] && inkscape --file=%f --export-plain-svg="`echo "%f" | sed -e s/[^.]*$/svg/I`" --without-gui && notify-send -i dialog-ok-apply.png "Ready! :-)" "Picture to svg: `echo "%f" | sed -e s/[^.]*$/svg/I | xargs basename` Ready!"

Das kommt dann in eine Datei

/home/USERNAME/.local/share/kservices5/ServiceMenus/pic_convert.desktop

Wobei USERNAME der eigene jeweilige Username sein muss. Anschließend noch im Terminal (KDE Konsole) laufen lassen:

kbuildsycoca5 --noincremental

Das liest nicht nur die *.desktop Dateien neu ein, es überprüft auch auf grobe Syntax Fehler.

trollsportverein

(Themenstarter)
Avatar von trollsportverein

Anmeldungsdatum:
21. Oktober 2010

Beiträge: 2627

Erweiterte Version nun hier.

Diese kann auch animierte gif aus mehreren Bildern machen. Zusätzlich kann diese Version auch Icon-Dateien machen, die Bilder in mehreren Größen in eine *.ico Datei packt. Das ist auch das Verfahren was GOG für seine Icons verwendet. Das aktuelle KDE kann diese Icons nutzen und es sieht dann besser aus, als wenn KDE ein PNG selbst skalieren muss. Die Ränder, besonders bei runden Icons wirken dann nicht so ausgefranst.

Die Vorraussetzungen sind die gleichen wie bei der Version oben, und auch das einbauen ins eigene System bleibt gleich.

[Desktop Entry]
Type=Service
ServiceTypes=KonqPopupMenu/Plugin
MimeType=image/bmp;image/jpeg;image/png;image/gif;image/webp;image/tiff;image/svg+xml;image/vnd.microsoft.icon;
Actions=convert_to_jpg;convert_to_png;convert_to_webp;convert_to_bmp;convert_to_gif;convert_to_tiff;convert_to_svg;convert_to_ani_gif;convert_to_ani_ico;
X-KDE-Submenu=Picture convert to jpg, png, webp. bmp, tiff, svg ==>
X-KDE-Submenu[de]=Bild umwandeln zu jpg, png, webp. bmp, tiff, svg ==>
Icon=darktable

[Desktop Action convert_to_jpg]
Icon=darktable
Name=Convert to jpg
Name[de]=Umwandeln zu jpg
Exec=[ -f "`echo "%f" | sed -e s/[^.]*$/jpg/I`" ] && notify-send -i window-close.png "STOP! `echo "%f" | sed -e s/[^.]*$/jpg/I | xargs basename` File exists!" ; [ ! -f "`echo "%f" | sed -e s/[^.]*$/jpg/I`" ] && convert %f "`echo "%f" | sed -e s/[^.]*$/jpg/I`" && notify-send -i dialog-ok-apply.png "Ready! :-)" "Picture to jpg: `echo "%f" | sed -e s/[^.]*$/jpg/I | xargs basename` Ready!"

[Desktop Action convert_to_png]
Icon=darktable
Name=Convert to png
Name[de]=Umwandeln zu png
Exec=[ -f "`echo "%f" | sed -e s/[^.]*$/png/I`" ] && notify-send -i window-close.png "STOP! `echo "%f" | sed -e s/[^.]*$/png/I | xargs basename` File exists!" ; [ ! -f "`echo "%f" | sed -e s/[^.]*$/png/I`" ] && convert %f "`echo "%f" | sed -e s/[^.]*$/png/I`" && notify-send -i dialog-ok-apply.png "Ready! :-)" "Picture to png: `echo "%f" | sed -e s/[^.]*$/png/I | xargs basename` Ready!"

[Desktop Action convert_to_webp]
Icon=darktable
Name=Convert to webp
Name[de]=Umwandeln zu webp
Exec=[ -f "`echo "%f" | sed -e s/[^.]*$/webp/I`" ] && notify-send -i window-close.png "STOP! `echo "%f" | sed -e s/[^.]*$/webm/I | xargs basename` File exists!" ; [ ! -f "`echo "%f" | sed -e s/[^.]*$/webp/I`" ] && convert %f "`echo "%f" | sed -e s/[^.]*$/webp/I`" && notify-send -i dialog-ok-apply.png "Ready! :-)" "Picture to png: `echo "%f" | sed -e s/[^.]*$/webp/I | xargs basename` Ready!"

[Desktop Action convert_to_bmp]
Icon=darktable
Name=Convert to bmp
Name[de]=Umwandeln zu bmp
Exec=[ -f "`echo "%f" | sed -e s/[^.]*$/bmp/I`" ] && notify-send -i window-close.png "STOP! `echo "%f" | sed -e s/[^.]*$/bmp/I | xargs basename` File exists!" ; [ ! -f "`echo "%f" | sed -e s/[^.]*$/bmp/I`" ] && convert %f "`echo "%f" | sed -e s/[^.]*$/bmp/I`" && notify-send -i dialog-ok-apply.png "Ready! :-)" "Picture to bmp: `echo "%f" | sed -e s/[^.]*$/bmp/I | xargs basename` Ready!"

[Desktop Action convert_to_gif]
Icon=darktable
Name=Convert to gif
Name[de]=Umwandeln zu gif
Exec=[ -f "`echo "%f" | sed -e s/[^.]*$/gif/I`" ] && notify-send -i window-close.png "STOP! `echo "%f" | sed -e s/[^.]*$/gif/I | xargs basename` File exists!" ; [ ! -f "`echo "%f" | sed -e s/[^.]*$/gif/I`" ] && convert %f "`echo "%f" | sed -e s/[^.]*$/gif/I`" && notify-send -i dialog-ok-apply.png "Ready! :-)" "Picture to gif: `echo "%f" | sed -e s/[^.]*$/gif/I | xargs basename` Ready!"

[Desktop Action convert_to_tiff]
Icon=darktable
Name=Convert to tiff
Name[de]=Umwandeln zu tiff
Exec=[ -f "`echo "%f" | sed -e s/[^.]*$/tiff/I`" ] && notify-send -i window-close.png "STOP! `echo "%f" | sed -e s/[^.]*$/tiff/I | xargs basename` File exists!" ; [ ! -f "`echo "%f" | sed -e s/[^.]*$/tiff/I`" ] && convert %f "`echo "%f" | sed -e s/[^.]*$/tiff/I`" && notify-send -i dialog-ok-apply.png "Ready! :-)" "Picture to tiff: `echo "%f" | sed -e s/[^.]*$/tiff/I | xargs basename` Ready!"

[Desktop Action convert_to_svg]
Icon=darktable
Name=Convert to svg
Name[de]=Umwandeln zu svg
Exec=[ -f "`echo "%f" | sed -e s/[^.]*$/svg/I`" ] && notify-send -i window-close.png "STOP! `echo "%f" | sed -e s/[^.]*$/svg/I | xargs basename` File exists!" ; [ ! -f "`echo "%f" | sed -e s/[^.]*$/svg/I`" ] && inkscape --file=%f --export-plain-svg="`echo "%f" | sed -e s/[^.]*$/svg/I`" --without-gui && notify-send -i dialog-ok-apply.png "Ready! :-)" "Picture to svg: `echo "%f" | sed -e s/[^.]*$/svg/I | xargs basename` Ready!"

[Desktop Action convert_to_ani_gif]
Icon=darktable
Name=Several pictures convert to animate gif
Name[de]=Mehrere Bilder umwandeln zu animiertem gif
Exec=[ -f "`echo "%f" | grep -E " "`" ] && notify-send -i window-close.png "STOP! `echo "Dont use blanks in Filenames!"`" ; [ -f "`ls -1 ani.gif`" ] && notify-send -i window-close.png "STOP! `echo "ani.gif"` File exists!" ; [ ! -f "`echo "%f" | grep -E " "`" ] && [ ! -f "`ls ani.gif`" ] && `echo "%f" | xargs basename >> ani_list.tmp` && convert -delay 100 -loop 0 `cat ani_list.tmp` ani.gif && rm ani_list.tmp && notify-send -i dialog-ok-apply.png "Ready! :-)" "Picture to gif: `echo ani.gif` Ready!"

[Desktop Action convert_to_ani_ico]
Icon=darktable
Name=Embed multiple sizes in ico
Name[de]=Mehrere Größen einbetten in ico
Exec=[ -f "`echo "%f" | sed -e s/[^.]*$/ico/I`" ] && notify-send -i window-close.png "STOP! `echo "%f" | sed -e s/[^.]*$/ico/I | xargs basename` File exists!" ; [ ! -f "`echo "%f" | sed -e s/[^.]*$/ico/I`" ] && convert %f -define icon:auto-resize=16,22,24,32,36,48,64,72,96,128,256 -compress zip "`echo "%f" | sed -e s/[^.]*$/ico/I`" && notify-send -i dialog-ok-apply.png "Ready! :-)" "Picture to ico: `echo "%f" | sed -e s/[^.]*$/ico/I | xargs basename` Ready!"

Zum animierten gif noch etwas: es dürfen keine Leerzeichen in den Dateinamen der Bilder sein, aus denen das ani.gif erstellt wird. Der Dateiname der Ausgabedatei ani.gif ist auch immer gleich, es prüft aber, ob diese Datei bereits vorhanden ist und bricht mit Warnung ab um kein Unglück anzurichten.

Lidux

Anmeldungsdatum:
18. April 2007

Beiträge: 14945

Hallo trollsportverein,

Hast du die Zeit und Möglichkeit eine KDE Servicemenue .desktop zu basteln für das Ausführen / Starten von "ICONs" auf dem Desktop per Rechtsklick und an erster Stelle des Menue ?

Gruss Lidux

trollsportverein

(Themenstarter)
Avatar von trollsportverein

Anmeldungsdatum:
21. Oktober 2010

Beiträge: 2627

Lidux schrieb:

Hallo trollsportverein,

Hast du die Zeit und Möglichkeit eine KDE Servicemenue .desktop zu basteln für das Ausführen / Starten von "ICONs" auf dem Desktop per Rechtsklick und an erster Stelle des Menue ?

Gruss Lidux

Ich verstehe nicht was Du mit starten von ICONs meinst. Ein Icon ist bloß ein Bildchen.

Lidux

Anmeldungsdatum:
18. April 2007

Beiträge: 14945

Hallo trollsportverein,

Vielen Dank für deine Zeit .....

"ICONs" auf dem Desktop entsprechen ja .desktop Dateien zum Starten eines Programms. Leider ist im Kontextmenue von Kubuntu nur das "Offnen", "Öffnen mit" etc. derselben .... aber kein "Starten" bzw. "Ausführen". Doppelklick bzw. Markieren und Entertaste funktionieren natürlich.

Da dies in anderen genutzten Distributionen z.B. OpenSuse usw. vorhanden ist, ich auch schon reichlich im Netz gesucht und "Anleitungen" ausprobiert habe bin ich zu deinem Threads/ Posts gekommen bezüglich selbstentwickelter KDE Servicemenues.

Bitte um Hilfe ...

Gruss Lidux

trollsportverein

(Themenstarter)
Avatar von trollsportverein

Anmeldungsdatum:
21. Oktober 2010

Beiträge: 2627

Das ist kein Fall für ein KDE Servicemenü.

Ich verwende das KDE Desktop ausschließlich ohne die Ordneransicht auf dem Desktop/Schreibtisch. Aber ich habe es mir mal angesehen und experimentiert. Der Unterschied ist offensichtlich ob die *.desktop Datei auf /home/USERNAME/Schreibtisch kopiert oder verlinkt wurde. Wenn aus dem KDE-Anwendungs-Starter Menü (der Knopf unten rechts per default) aufs Desktop/Schreibtisch geschickt wird, ist ein Link. Kopiert man aber stattdessen etwa die org.kde.falkon.desktop Datei auf den Desktop/Schreibtisch, dann gibt es die Sicherheitsabfrage. Man beachte auch den Unterschied der Zeichen die an das sichtbare Falkon-Icon auf dem Desktop/Schreibtisch projiziert werden.

Bilder

Lidux

Anmeldungsdatum:
18. April 2007

Beiträge: 14945

Hallo trollsportverein,

Danke für deine Bemühungen.

Ja, bei den Einstellungen ist Ordneransicht per default eingestellt und die Symbole auf dem Desktop sind so wie du es beschrieben hast. Die meisten verlinkt per Startmenue, nur eins (TorBrowser) habe ich aufs Desktop gezogen .... ist an dem Symbol mit der "Markierung" zu erkennen.

Habe in den Einstellungen mal auf die andere Einstellung umgestellt (glaube das dies für die Aktivitäten notwendig ist). Folge war das alles zerdeppert wurde und ich komplett eine "Neuinstallation" machen musste.

Bei KDE4 gab es bei Kubuntu früher mal ein fertiges Servicemenue zum nachinstallieren, wo dann der Menuepunkt zum Starten / Ausfuhren (an erster Stelle) dieser Deskptopdateien angezeigt wurde.

Jedenfalls wird bei mir mit "Öffnen" nur der Inhalt mit Kate angezeigt.

Gruss Lidux

trollsportverein

(Themenstarter)
Avatar von trollsportverein

Anmeldungsdatum:
21. Oktober 2010

Beiträge: 2627

Eine weitere Version von pic_convert.desktop, diese enthält weitere Spielereien, wie etwa aus Filmschnipseln animierte GIFs zu erstellen.

Dazu aber eine Warnung die ernst genommen sein will: die Filmschnipsel dürfen nur ganz winzig sein, die GIFs werden riesig, nehmen schnell riesige Megabytegröße an, sehr viel größer als der ursprüngliche Filmschnipsel, dafür aber in sehr guter Qualität. Für diese Funktion muss FFmpeg installiert sein, falls das noch nicht der Fall ist:

sudo apt-get install ffmpeg

Außerdem ist noch Spielerei zum schicken von Bildchen in base64 Code in den KDE-Klipper enthalten. Keine Ahnung wofür man das unbedingt brauchen müsste, aber es ist möglich. Vielleicht können Webseiten-Maler etwas damit anfangen, dort sah ich schon häufiger base64, anstatt verlinkte Bildchen im Code.

Die Funktion für umwandeln in JPGs hat noch eine Extra-Feature bekommen, falls etwa mal ein PNG mit transparentem Hintergrund erwischt wird, wie beispielsweise, dieses von ClamAV hier:

Der im Orginal transparente Hintergrund wird dann in darkgrey umgewandelt. Man kann das im Code des pic_convert.desktop selbst ändern, beispielsweise durch white ersetzen. Es macht auch ein extra Pop-up zur Info wenn transparenter Hintergrund ersetzt wird.

Hier nun das neue $HOME/.local/share/kservices5/ServiceMenus/pic_convert.desktop:

[Desktop Entry]
Type=Service
ServiceTypes=KonqPopupMenu/Plugin
MimeType=image/bmp;image/jpeg;image/png;image/gif;image/webp;image/tiff;image/svg+xml;video/3gpp;video/3gpp2;video/mp4;video/mpeg;video/ogg;video/x-matroska;video/x-mjpeg;video/wmp;video/wmv;video/x-msvideo;video/x-flic;video/x-flv;video/x-sgi-movie;video/quicktime;image/vnd.microsoft.icon;
Actions=convert_to_jpg;convert_to_png;convert_to_webp;convert_to_bmp;convert_to_gif;convert_to_tiff;convert_to_svg;convert_to_ani_gif;convert_to_ico;convert_video_to_ani_gif;convert_to_data_image_png_base64_output_clipboard;convert_to_data_image_jpg_base64_output_clipboard;convert_to_data_image_gif_base64_output_clipboard;
X-KDE-Submenu=Picture convert to jpg, png, webp. bmp, tiff, svg ==>
X-KDE-Submenu[de]=Bild umwandeln zu jpg, png, webp. bmp, tiff, svg ==>
Icon=darktable

[Desktop Action convert_to_jpg]
Icon=darktable
Name=Convert to jpg
Name[de]=Umwandeln zu jpg
Exec=[ -f "`echo "%f" | sed -e s/[^.]*$/jpg/I`" ] && notify-send -i window-close.png "STOP! `echo "%f" | sed -e s/[^.]*$/jpg/I | xargs basename` File exists!" ; [ ! -f "`echo "%f" | sed -e s/[^.]*$/jpg/I`" ] &&  identify -format %%A "%f" | grep True  && convert %f  -background darkgrey -flatten "`echo "%f" | sed -e s/[^.]*$/jpg/I`" && notify-send -i dialog-ok-apply.png  "Background transparency converted to darkgrey" || convert %f "`echo "%f" | sed -e s/[^.]*$/jpg/I`" &&  notify-send -i dialog-ok-apply.png "Ready! :-)" "Picture to jpg: `echo "%f" | sed -e s/[^.]*$/jpg/I | xargs basename` Ready!"

[Desktop Action convert_to_png]
Icon=darktable
Name=Convert to png
Name[de]=Umwandeln zu png
Exec=[ -f "`echo "%f" | sed -e s/[^.]*$/png/I`" ] && notify-send -i window-close.png "STOP! `echo "%f" | sed -e s/[^.]*$/png/I | xargs basename` File exists!" ; [ ! -f "`echo "%f" | sed -e s/[^.]*$/png/I`" ] && convert %f "`echo "%f" | sed -e s/[^.]*$/png/I`" && notify-send -i dialog-ok-apply.png "Ready! :-)" "Picture to png: `echo "%f" | sed -e s/[^.]*$/png/I | xargs basename` Ready!"

[Desktop Action convert_to_webp]
Icon=darktable
Name=Convert to webp
Name[de]=Umwandeln zu webp
Exec=[ -f "`echo "%f" | sed -e s/[^.]*$/webp/I`" ] && notify-send -i window-close.png "STOP! `echo "%f" | sed -e s/[^.]*$/webm/I | xargs basename` File exists!" ; [ ! -f "`echo "%f" | sed -e s/[^.]*$/webp/I`" ] && convert %f "`echo "%f" | sed -e s/[^.]*$/webp/I`" && notify-send -i dialog-ok-apply.png "Ready! :-)" "Picture to png: `echo "%f" | sed -e s/[^.]*$/webp/I | xargs basename` Ready!"

[Desktop Action convert_to_bmp]
Icon=darktable
Name=Convert to bmp
Name[de]=Umwandeln zu bmp
Exec=[ -f "`echo "%f" | sed -e s/[^.]*$/bmp/I`" ] && notify-send -i window-close.png "STOP! `echo "%f" | sed -e s/[^.]*$/bmp/I | xargs basename` File exists!" ; [ ! -f "`echo "%f" | sed -e s/[^.]*$/bmp/I`" ] && convert %f "`echo "%f" | sed -e s/[^.]*$/bmp/I`" && notify-send -i dialog-ok-apply.png "Ready! :-)" "Picture to bmp: `echo "%f" | sed -e s/[^.]*$/bmp/I | xargs basename` Ready!"

[Desktop Action convert_to_gif]
Icon=darktable
Name=Convert to gif
Name[de]=Umwandeln zu gif
Exec=[ -f "`echo "%f" | sed -e s/[^.]*$/gif/I`" ] && notify-send -i window-close.png "STOP! `echo "%f" | sed -e s/[^.]*$/gif/I | xargs basename` File exists!" ; [ ! -f "`echo "%f" | sed -e s/[^.]*$/gif/I`" ] && convert %f "`echo "%f" | sed -e s/[^.]*$/gif/I`" && notify-send -i dialog-ok-apply.png "Ready! :-)" "Picture to gif: `echo "%f" | sed -e s/[^.]*$/gif/I | xargs basename` Ready!"

[Desktop Action convert_to_tiff]
Icon=darktable
Name=Convert to tiff
Name[de]=Umwandeln zu tiff
Exec=[ -f "`echo "%f" | sed -e s/[^.]*$/tiff/I`" ] && notify-send -i window-close.png "STOP! `echo "%f" | sed -e s/[^.]*$/tiff/I | xargs basename` File exists!" ; [ ! -f "`echo "%f" | sed -e s/[^.]*$/tiff/I`" ] && convert %f "`echo "%f" | sed -e s/[^.]*$/tiff/I`" && notify-send -i dialog-ok-apply.png "Ready! :-)" "Picture to tiff: `echo "%f" | sed -e s/[^.]*$/tiff/I | xargs basename` Ready!"

[Desktop Action convert_to_svg]
Icon=darktable
Name=Convert to svg
Name[de]=Umwandeln zu svg
Exec=[ -f "`echo "%f" | sed -e s/[^.]*$/svg/I`" ] && notify-send -i window-close.png "STOP! `echo "%f" | sed -e s/[^.]*$/svg/I | xargs basename` File exists!" ; [ ! -f "`echo "%f" | sed -e s/[^.]*$/svg/I`" ] && inkscape --file=%f --export-plain-svg="`echo "%f" | sed -e s/[^.]*$/svg/I`" --without-gui && notify-send -i dialog-ok-apply.png "Ready! :-)" "Picture to svg: `echo "%f" | sed -e s/[^.]*$/svg/I | xargs basename` Ready!"

[Desktop Action convert_to_ani_gif]
Icon=darktable
Name=Several pictures convert to animate gif
Name[de]=Mehrere Bilder umwandeln zu animiertem gif
Exec=[ -f "`echo "%f" | grep -E " "`" ] && notify-send -i window-close.png "STOP! `echo "Dont use blanks in Filenames!"`" ; [ -f "`ls -1 ani.gif`" ] && notify-send -i window-close.png "STOP! `echo "ani.gif"` File exists!" ; [ ! -f "`echo "%f" | grep -E " "`" ] && [ ! -f "`ls ani.gif`" ] && `echo "%f" | xargs basename >> ani_list.tmp` && convert -delay 100 -loop 0 `cat ani_list.tmp` ani.gif && rm ani_list.tmp && notify-send -i dialog-ok-apply.png "Ready! :-)" "Picture to gif: `echo ani.gif` Ready!"

[Desktop Action convert_to_ico]
Icon=darktable
Name=Embed multiple sizes in ico
Name[de]=Mehrere Größen einbetten in ico
Exec=[ -f "`echo "%f" | sed -e s/[^.]*$/ico/I`" ] && notify-send -i window-close.png "STOP! `echo "%f" | sed -e s/[^.]*$/ico/I | xargs basename` File exists!" ; [ ! -f "`echo "%f" | sed -e s/[^.]*$/ico/I`" ] && convert %f -define icon:auto-resize=16,22,24,32,36,48,64,72,96,128,256 -compress zip "`echo "%f" | sed -e s/[^.]*$/ico/I`" && notify-send -i dialog-ok-apply.png "Ready! :-)" "Picture to ico: `echo "%f" | sed -e s/[^.]*$/ico/I | xargs basename` Ready!"

[Desktop Action convert_video_to_ani_gif]
Icon=darktable
Name=Video convert to animate gif
Name[de]=Video umwandeln zu animiertem gif
Exec=[ -f "`echo "%f" | sed -e s/[^.]*$/gif/I`" ] && notify-send -i window-close.png "STOP! `echo "%f" | sed -e s/[^.]*$/gif/I | xargs basename` File exists!" ; [ ! -f "`echo "%f" | sed -e s/[^.]*$/gif/I`" ] && ffmpeg -i "%f" -vf "fps=10,scale=320:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" -loop 0 "`echo "%f" | sed -e s/[^.]*$/gif/I`" && notify-send -i dialog-ok-apply.png "Ready! :-)" "Video to gif: `echo "%f" | sed -e s/[^.]*$/gif/I | xargs basename` Ready!"

[Desktop Action convert_to_data_image_png_base64_output_clipboard]
MimeType=image/png;
Icon=darktable
Name=Convert to data:image/png;base64, clipboard output
Name[de]=Umwandeln zu data:image/png;base64, Clipboard Ausgabe
Exec=echo "data:image/png;base64,`base64 -w 0 "%f"`" | xclip -r -selection clipboard && notify-send -i dialog-ok-apply.png "Ready! :-)" "Base64 in Clipboard: \n \n `echo "%f" | xargs basename`"

[Desktop Action convert_to_data_image_jpg_base64_output_clipboard]
MimeType=image/jpg;
Icon=darktable
Name=Convert to data:image/jpg;base64, clipboard output
Name[de]=Umwandeln zu data:image/jpg;base64, Clipboard Ausgabe
Exec=echo "data:image/jpg;base64,`base64 -w 0 "%f"`" | xclip -r -selection clipboard && notify-send -i dialog-ok-apply.jpg "Ready! :-)" "Base64 in Clipboard: \n \n `echo "%f" | xargs basename`"

[Desktop Action convert_to_data_image_gif_base64_output_clipboard]
MimeType=image/gif;
Icon=darktable
Name=Convert to data:image/gif;base64, clipboard output
Name[de]=Umwandeln zu data:image/gif;base64, Clipboard Ausgabe
Exec=echo "data:image/gif;base64,`base64 -w 0 "%f"`" | xclip -r -selection clipboard && notify-send -i dialog-ok-apply.gif "Ready! :-)" "Base64 in Clipboard: \n \n `echo "%f" | xargs basename`"

trollsportverein

(Themenstarter)
Avatar von trollsportverein

Anmeldungsdatum:
21. Oktober 2010

Beiträge: 2627

Neue Version. Neue Möglichkeiten. Es kommt das umwandeln in AVIF hinzu, sowohl für ein statisches AVIF-Bild, als auch ein Video in ein animiertes AVIF umzuwandeln. Firefox kann zur Zeit nur das statische AVIF-Bild darstellen. Der Chrome-Webrowser und Falkon können auch das animierte AVIF darstellen. Auch MPV und SMPlayer können das animierte AVIF abspielen.

Für die Funktion Video umwandeln zu animiertem avif und gif ist zwingend FFmpeg notwendig, der installierte FFmpeg muss für avif mit libsvtav1 gebaut worden sein.

Mit libaom ist Video in avif umwandeln unerträglich langsam. Im Test brauchten 14 Sekunden Animation beim umwandeln mit libaom mehr als eine Dreiviertelstunde. Mit FFmpeg mit engebauter libsvtav1 Funktionalität geht das sehr viel schneller.

[Desktop Entry]
Type=Service
ServiceTypes=KonqPopupMenu/Plugin
MimeType=image/bmp;image/jpeg;image/png;image/gif;image/webp;image/tiff;image/svg+xml;video/3gpp;video/3gpp2;video/mp4;video/mpeg;video/ogg;video/x-matroska;video/x-mjpeg;video/wmp;video/wmv;video/x-msvideo;video/x-flic;video/x-flv;video/x-sgi-movie;video/quicktime;image/vnd.microsoft.icon;
Actions=01convert_to_avif;02convert_to_bmp;03convert_to_gif;04convert_to_ico;05convert_to_jpg;06convert_to_png;07convert_to_svg;08convert_to_tiff;09convert_to_webp;100SEPARATOR_;10convert_to_ani_gif;110SEPARATOR_;11convert_video_to_ani_avif;12convert_video_to_ani_gif;130SEPARATOR_;13convert_to_data_image_gif_base64_output_clipboard;14convert_to_data_image_jpg_base64_output_clipboard;15convert_to_data_image_png_base64_output_clipboard;16convert_to_data_image_svg_base64_output_clipboard;
X-KDE-Submenu=Picture convert to avif, bmp, gif, ico, jpg, png, svg, tiff ==>
X-KDE-Submenu[de]=Bild umwandeln zu avif, bmp, gif, ico, jpg, png, svg, tiff ==>
Icon=darktable

[Desktop Action 01convert_to_avif]
Icon=darktable
Name=Convert to avif
Name[de]=Umwandeln zu avif
Exec=[ -f "`echo "%f" | sed -e s/[^.]*$/avif/I`" ] && notify-send -i window-close.png "STOP! `echo "%f" | sed -e s/[^.]*$/avif/I | xargs basename` File exists!" ; [ ! -f "`echo "%f" | sed -e s/[^.]*$/avif/I`" ] && convert %f "`echo "%f" | sed -e s/[^.]*$/avif/I`" && notify-send -i dialog-ok-apply.png "Ready! :-)" "Picture to avif: `echo "%f" | sed -e s/[^.]*$/avif/I | xargs basename` Ready!"

[Desktop Action 02convert_to_bmp]
Icon=darktable
Name=Convert to bmp
Name[de]=Umwandeln zu bmp
Exec=[ -f "`echo "%f" | sed -e s/[^.]*$/bmp/I`" ] && notify-send -i window-close.png "STOP! `echo "%f" | sed -e s/[^.]*$/bmp/I | xargs basename` File exists!" ; [ ! -f "`echo "%f" | sed -e s/[^.]*$/bmp/I`" ] && convert %f "`echo "%f" | sed -e s/[^.]*$/bmp/I`" && notify-send -i dialog-ok-apply.png "Ready! :-)" "Picture to bmp: `echo "%f" | sed -e s/[^.]*$/bmp/I | xargs basename` Ready!"

[Desktop Action 03convert_to_gif]
Icon=darktable
Name=Convert to gif
Name[de]=Umwandeln zu gif
Exec=[ -f "`echo "%f" | sed -e s/[^.]*$/gif/I`" ] && notify-send -i window-close.png "STOP! `echo "%f" | sed -e s/[^.]*$/gif/I | xargs basename` File exists!" ; [ ! -f "`echo "%f" | sed -e s/[^.]*$/gif/I`" ] && convert %f "`echo "%f" | sed -e s/[^.]*$/gif/I`" && notify-send -i dialog-ok-apply.png "Ready! :-)" "Picture to gif: `echo "%f" | sed -e s/[^.]*$/gif/I | xargs basename` Ready!"

[Desktop Action 04convert_to_ico]
Icon=darktable
Name=Embed multiple sizes in ico
Name[de]=Mehrere Größen einbetten in ico
Exec=[ -f "`echo "%f" | sed -e s/[^.]*$/ico/I`" ] && notify-send -i window-close.png "STOP! `echo "%f" | sed -e s/[^.]*$/ico/I | xargs basename` File exists!" ; [ ! -f "`echo "%f" | sed -e s/[^.]*$/ico/I`" ] && convert %f -define icon:auto-resize=16,22,24,32,36,48,64,72,96,128,256 -compress zip "`echo "%f" | sed -e s/[^.]*$/ico/I`" && notify-send -i dialog-ok-apply.png "Ready! :-)" "Picture to ico: `echo "%f" | sed -e s/[^.]*$/ico/I | xargs basename` Ready!"

[Desktop Action 05convert_to_jpg]
Icon=darktable
Name=Convert to jpg
Name[de]=Umwandeln zu jpg
Exec=[ -f "`echo "%f" | sed -e s/[^.]*$/jpg/I`" ] && notify-send -i window-close.png "STOP! `echo "%f" | sed -e s/[^.]*$/jpg/I | xargs basename` File exists!" ; [ ! -f "`echo "%f" | sed -e s/[^.]*$/jpg/I`" ] &&  identify -format %%A "%f" | grep True  && convert %f  -background darkgrey -flatten "`echo "%f" | sed -e s/[^.]*$/jpg/I`" && notify-send -i dialog-ok-apply.png  "Background transparency converted to darkgrey" || convert %f "`echo "%f" | sed -e s/[^.]*$/jpg/I`" &&  notify-send -i dialog-ok-apply.png "Ready! :-)" "Picture to jpg: `echo "%f" | sed -e s/[^.]*$/jpg/I | xargs basename` Ready!"

[Desktop Action 06convert_to_png]
Icon=darktable
Name=Convert to png
Name[de]=Umwandeln zu png
Exec=[ -f "`echo "%f" | sed -e s/[^.]*$/png/I`" ] && notify-send -i window-close.png "STOP! `echo "%f" | sed -e s/[^.]*$/png/I | xargs basename` File exists!" ; [ ! -f "`echo "%f" | sed -e s/[^.]*$/png/I`" ] && convert %f "`echo "%f" | sed -e s/[^.]*$/png/I`" && notify-send -i dialog-ok-apply.png "Ready! :-)" "Picture to png: `echo "%f" | sed -e s/[^.]*$/png/I | xargs basename` Ready!"

[Desktop Action 07convert_to_svg]
Icon=darktable
Name=Convert to svg
Name[de]=Umwandeln zu svg
Exec=[ -f "`echo "%f" | sed -e s/[^.]*$/svg/I`" ] && notify-send -i window-close.png "STOP! `echo "%f" | sed -e s/[^.]*$/svg/I | xargs basename` File exists!" ; [ ! -f "`echo "%f" | sed -e s/[^.]*$/svg/I`" ] && inkscape --file=%f --export-plain-svg="`echo "%f" | sed -e s/[^.]*$/svg/I`" --without-gui && notify-send -i dialog-ok-apply.png "Ready! :-)" "Picture to svg: `echo "%f" | sed -e s/[^.]*$/svg/I | xargs basename` Ready!"

[Desktop Action 08convert_to_tiff]
Icon=darktable
Name=Convert to tiff
Name[de]=Umwandeln zu tiff
Exec=[ -f "`echo "%f" | sed -e s/[^.]*$/tiff/I`" ] && notify-send -i window-close.png "STOP! `echo "%f" | sed -e s/[^.]*$/tiff/I | xargs basename` File exists!" ; [ ! -f "`echo "%f" | sed -e s/[^.]*$/tiff/I`" ] && convert %f "`echo "%f" | sed -e s/[^.]*$/tiff/I`" && notify-send -i dialog-ok-apply.png "Ready! :-)" "Picture to tiff: `echo "%f" | sed -e s/[^.]*$/tiff/I | xargs basename` Ready!"

[Desktop Action 09convert_to_webp]
Icon=darktable
Name=Convert to webp
Name[de]=Umwandeln zu webp
Exec=[ -f "`echo "%f" | sed -e s/[^.]*$/webp/I`" ] && notify-send -i window-close.png "STOP! `echo "%f" | sed -e s/[^.]*$/webm/I | xargs basename` File exists!" ; [ ! -f "`echo "%f" | sed -e s/[^.]*$/webp/I`" ] && convert %f "`echo "%f" | sed -e s/[^.]*$/webp/I`" && notify-send -i dialog-ok-apply.png "Ready! :-)" "Picture to png: `echo "%f" | sed -e s/[^.]*$/webp/I | xargs basename` Ready!"

[Desktop Action 100SEPARATOR_]
Name=-----------------------------------
Exec=`echo "%f" > /dev/null` ; notify-send -i dialog-ok-apply.png "Harmless Separator" "Harmloser Trenner"

[Desktop Action 10convert_to_ani_gif]
Icon=darktable
Name=Several pictures convert to animate gif
Name[de]=Mehrere Bilder umwandeln zu animiertem gif
Exec=[ -f "`echo "%f" | grep -E " "`" ] && notify-send -i window-close.png "STOP! `echo "Dont use blanks in Filenames!"`" ; [ -f "`ls -1 ani.gif`" ] && notify-send -i window-close.png "STOP! `echo "ani.gif"` File exists!" ; [ ! -f "`echo "%f" | grep -E " "`" ] && [ ! -f "`ls ani.gif`" ] && `echo "%f" | xargs basename >> ani_list.tmp` && convert -delay 100 -loop 0 `cat ani_list.tmp` ani.gif && rm ani_list.tmp && notify-send -i dialog-ok-apply.png "Ready! :-)" "Picture to gif: `echo ani.gif` Ready!"

[Desktop Action 110SEPARATOR_]
Name=-----------------------------------
Exec=`echo "%f" > /dev/null` ; notify-send -i dialog-ok-apply.png "Harmless Separator" "Harmloser Trenner"

[Desktop Action 11convert_video_to_ani_avif]
Icon=darktable
Name=Video convert to animate avif
Name[de]=Video umwandeln zu animiertem avif
Exec=[ -f "`echo "%f" | sed -e s/[^.]*$/avif/I`" ] && notify-send -i window-close.png "STOP! `echo "%f" | sed -e s/[^.]*$/avif/I | xargs basename` File exists!" ; [ ! -f "`echo "%f" | sed -e s/[^.]*$/avif/I`" ] && ffmpeg -i "%f"  -c:v libsvtav1  "`echo "%f" | sed -e s/[^.]*$/avif/I`" && notify-send -i dialog-ok-apply.png "Ready! :-)" "Video to avif: `echo "%f" | sed -e s/[^.]*$/avif/I | xargs basename` Ready!"

[Desktop Action 12convert_video_to_ani_gif]
Icon=darktable
Name=Video convert to animate gif
Name[de]=Video umwandeln zu animiertem gif
Exec=[ -f "`echo "%f" | sed -e s/[^.]*$/gif/I`" ] && notify-send -i window-close.png "STOP! `echo "%f" | sed -e s/[^.]*$/gif/I | xargs basename` File exists!" ; [ ! -f "`echo "%f" | sed -e s/[^.]*$/gif/I`" ] && ffmpeg -i "%f" -vf "fps=10,scale=320:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" -loop 0 "`echo "%f" | sed -e s/[^.]*$/gif/I`" && notify-send -i dialog-ok-apply.png "Ready! :-)" "Video to gif: `echo "%f" | sed -e s/[^.]*$/gif/I | xargs basename` Ready!"

[Desktop Action 13convert_to_data_image_gif_base64_output_clipboard]
MimeType=image/gif;
Icon=darktable
Name=Convert to data:image/gif;base64, clipboard output
Name[de]=Umwandeln zu data:image/gif;base64, Clipboard Ausgabe
Exec=echo "data:image/gif;base64,`base64 -w 0 "%f"`" | xclip -r -selection clipboard && notify-send -i dialog-ok-apply.gif "Ready! :-)" "Base64 in Clipboard: \n \n `echo "%f" | xargs basename`"

[Desktop Action 130SEPARATOR_]
Name=-----------------------------------
Exec=`echo "%f" > /dev/null` ; notify-send -i dialog-ok-apply.png "Harmless Separator" "Harmloser Trenner"

[Desktop Action 14convert_to_data_image_jpg_base64_output_clipboard]
MimeType=image/jpg;
Icon=darktable
Name=Convert to data:image/jpg;base64, clipboard output
Name[de]=Umwandeln zu data:image/jpg;base64, Clipboard Ausgabe
Exec=echo "data:image/jpg;base64,`base64 -w 0 "%f"`" | xclip -r -selection clipboard && notify-send -i dialog-ok-apply.jpg "Ready! :-)" "Base64 in Clipboard: \n \n `echo "%f" | xargs basename`"

[Desktop Action 15convert_to_data_image_png_base64_output_clipboard]
MimeType=image/png;
Icon=darktable
Name=Convert to data:image/png;base64, clipboard output
Name[de]=Umwandeln zu data:image/png;base64, Clipboard Ausgabe
Exec=echo "data:image/png;base64,`base64 -w 0 "%f"`" | xclip -r -selection clipboard && notify-send -i dialog-ok-apply.png "Ready! :-)" "Base64 in Clipboard: \n \n `echo "%f" | xargs basename`"

[Desktop Action 16convert_to_data_image_svg_base64_output_clipboard]
MimeType=image/gif;
Icon=darktable
Name=Convert to data:image/svg+xml;base64, clipboard output
Name[de]=Umwandeln zu data:image/svg+xml;base64, Clipboard Ausgabe
Exec=echo "data:image/svg+xml;base64,`base64 -w 0 "%f"`" | xclip -r -selection clipboard && notify-send -i dialog-ok-apply.gif "Ready! :-)" "Base64 in Clipboard: \n \n `echo "%f" | xargs basename`"

Das kommt dann in eine Datei

/home/USERNAME/.local/share/kservices5/ServiceMenus/pic_convert.desktop

Wobei USERNAME der eigene jeweilige Username sein muss. Anschließend noch im Terminal (KDE Konsole) laufen lassen:

kbuildsycoca5 --noincremental
Antworten |