Bearbeitung vielen Bilddateien mit KDE-ServiceMenü

Mr. Brooks

Lt. Commander
Registriert
Aug. 2011
Beiträge
1.441
Hallo,

ich habe einfache Aktionen schon mehrfach über die KDE-ServiceMenüs umgesetzt. Jetzt komme ich irgendwie nicht weiter. Ich möchte hier Bilder splitten und später wieder zusammenfügen. Ich erstelle in 2 Schritten 2 Dateien, einmal der obere und einmal der untere Teil. Diese werden dann wieder zusammengefügt (konkret: es wird ein Teil sinnlosen Platzes dazwischen weggelassen). Da sich die Koordinaten von Projekt zu Projekt etwas unterscheiden soll hier später noch ein kleines grafisches Eingabefeld dazu kommen.

Das ganze sieht so aus:

Code:
convert test.png -crop 0x0+0-180 test-oben.png
convert test.png -crop 0x0+0+1850 test-unten.png
convert test-oben.png test-unten.png -append out.png

(-append sorgt dafür, dass die beiden Bilder untereinander zusammengefügt werden; +append wäre nebeneinander).

Als ServiceMenü geht es leider nur mit jeweils einer Datei im Input. Wähle ich 2 Dateien aus fügt er die falsch zusammen. Ich müsste hier also noch eine Art Sortierung einbauen, so dass die beiden zusammengehörenden Dateien in der letzten Zeile auch zusammengefügt werden, also:

Code:
convert test1-oben.png test1-unten.png -append out1.png
convert test2-oben.png test2-unten.png -append out2.png

Bei mir fügt er glaube ich das Original des 1. Inputs mit dem geschnitten des 2. Inputs zusammen.

Jemand eine Idee wie man das machen könnte?
 
Ich weiß, jetzt nicht mehr genau, wie das mit den KDE-Servicemenüs funktioniert, aber müsstest du da nicht auch einfach ein Bash-Skript als Befehl einfügen können? D.h. dass du alle drei Befehle über einen einzigen Klick ausführen kannst.

Also, ungefähr so:
Code:
#!/bin/bash
convert $1 -crop 0x0+0-180 /tmp/oben.png
convert $1 -crop 0x0+0+1850 /tmp/unten.png
convert /tmp/oben.png /tmp/unten.png -append out.png

Dann kannst du das Skript einfach irgendwo abspeichern, mit chmod +x ausführbar machen, und in der KDE Service Datei gibst du einfach den Pfad zu dem Skript an.

Oder habe ich das, was du machen willst, komplett falsch verstanden?
 
Ist schon richtig verstanden. Ich kann sowohl auf ein Script verweisen als auch alles in die Datei für das SM schreiben. Problem ist aber: Wenn ich diese 3 Zeilen für ein Bild ausführe geht das. Bei 2 und mehr nicht. Wenn ich 1.jpg und 2.jpg habe erhalte ich mit den Zeilen 1 und 2 Vier Dateien: 1-oben.jpg, 1-unten.jpg, 2-oben.jpg und 2-unten.jpg. Die 3. Zeile geht dann nicht bzw. nimmt die falschen Dateien als Input an.

Man müsste sicherstellen, dass im 3. Befehl immer die beiden passenden Dateien genommen werden, also 1-oben.jpg und 1-unten.jpg für den ersten Durchlauf. Und hier steh ich auf dem Schlauch.
 
Da ich immer noch davon ausgehe, dass die in den Zwischenschritten vorhandenen Dateien nicht wirklich brauchst (sag mir, falls ich da falsch liege), könntest du folgendes Skript probieren:

Code:
#!/bin/bash
for i in "$@"
do
    convert $i -crop 0x0+0-180 /tmp/oben.png
    convert $i -crop 0x0+0+1850 /tmp/unten.png
    convert /tmp/oben.png /tmp/unten.png -append $i-out.png
done

Falls du die Zwischendateien doch brauchst, dann kannst du sie ja auch $i-unten bzw. $i-oben nennen, und dann entsprechend im 3. convert Befehl so aufrufen. Wenn du sie nicht brauchst, werden sie halt bei jedem Durchlauf der Schleife überschrieben, aber das wäre ja dann egal.
 
Danke, so gehts. Und ja, die zwischengespeicherten Dateien brauch ich nicht mehr, hab da am Ende noch ein rm eingefügt um die letzten beiden Dateien wieder zu löschen.
 
Zurück
Oben