ubuntuusers.de

zenity und Bilder anzeigen

Status: Gelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

atero

Anmeldungsdatum:
26. März 2007

Beiträge: 94

Hallo,

ich habe ein Skript, das Bilder (.jpg) auf eine bestimmte Größe konvertiert. Mit diesem Skript möchte ich die Bilder auch gleich noch drehen, also Bilder die hochkant sind, nach links bzw rechts drehen.
Ich hätte also gerne sowas:

if Bildhöhe > Bildbreite then
# Bild muss gedreht werden
zenity: Bild anzeigen und Liste/Buttons anzeigen mit "links drehen" "rechts drehen" "beibehalten"
Je nach Usereingabe Bild drehen
end if

Mein Problem ist aber noch folgendes:
Wie kann ich mit zenity ein Bild anzeigen - geht das überhaupt?

Für die Usereingabe wären mir 3 Buttons am liebsten. Bei zenity habe ich aber nur "Listen" gefunden (also Auswahl und dann mit ok bestätigen). Ist zwar etwas umständlicher, geht aber vermutlich nicht anders, oder?

Ich hoffe ihr habt mir ein paar Tipps
Viele Grüße
atero

Blattlaus

Avatar von Blattlaus

Anmeldungsdatum:
29. März 2006

Beiträge: 1399

atero hat geschrieben:

Wie kann ich mit zenity ein Bild anzeigen - geht das überhaupt?

Soweit ich weiß geht das nicht.

syscon-hh

Anmeldungsdatum:
8. Oktober 2005

Beiträge: 10220

Das geht zwar nicht direkt - aber Du kannst ja vom Script her mit z.B.

evince /pfad/zum/Bild.jpg

dieses Dir anzeigen lassen, dort das Drehen veranlassen und wieder zurückspeichern. Mit dem Schließen von evince läuft dann das Script erst weiter.

Durch richtiges Programmieren - z.B.: mit exec in einer Schleife / Subroutine kann man auch nur eine Anzeige erreichen und nach Auswahl in einen Zenity-Befehlsfenster [[mark] --list[/mark] ] (links drehen | rechts drehen | tu garnichts) die Anzeige automatisch wieder vom Bildschirm nehmen.

gruß syscon-hh

atero

(Themenstarter)

Anmeldungsdatum:
26. März 2007

Beiträge: 94

danke, dann werde ich das so versuchen!

atero

(Themenstarter)

Anmeldungsdatum:
26. März 2007

Beiträge: 94

hat noch nicht ganz geklappt, aber ich komme vorwärts:

bildbreite=`identify -format %w $FILE`
bildhoehe=`identify -format %h $FILE`
    
if (( $bildbreite < $bildhoehe ))
then
    # Bild muss evt gedreht werden
    `display -resize "400x400" -geometry "+800+200" $FILE &`
    pid1=$!
    #zenity Listenabfrage
    #display killen
    #je nach Usereingabe drehen (dafür habe ich bereits ein Skript)
fi

Problem daran ist, dass er display nicht im Hintergrund ausführt. D.h. das Skript bleibt an der display-Stelle stehn bis ich das Fenster mit dem Bild schließe.
Habe es zuerst mit der exec-Variante versucht, gebe aber zu dass ich hier nicht ganz verstanden habe wie es funktioniert. Wenn das die bessere Lösung ist als meine Versuche, auch gerne mit exec.
Kann mir nochmal jemand weiterhelfen?

Dakuan

Avatar von Dakuan

Anmeldungsdatum:
2. November 2004

Beiträge: 6504

Wohnort: Hamburg

Du schickst das "&" Zeichen ebenfalls an display. Setze das mal hinter den letzten Backtick.

atero

(Themenstarter)

Anmeldungsdatum:
26. März 2007

Beiträge: 94

gute Idee, klingt für mich logisch - funktioniert aber leider immer noch nicht.
so schauts jetzt aus:

if (( $bildbreite < $bildhoehe ))
    then
        # Bild muss evt gedreht werden
        `display -resize "400x400" -geometry "+800+200" $FILE` &
        pid1=$!
        AUSWAHL=$(zenity --list --radiolist --width=500 --height=250 --text="Soll das Bild gedreht werden?"  --title="Bild drehen" --column="" --column "Richtung" TRUE "nach links drehen" FALSE "nach rechts drehen" FALSE "beibehalten")
        kill $pid1


Die zenity Abfrage erscheint erst, wenn ich das Fenster mit dem Bild von Hand schließe.

BadBoy

Avatar von BadBoy

Anmeldungsdatum:
25. Oktober 2007

Beiträge: 479

lass doch mal die häßlichen backticks weg...du arbeitest mit der stdout-ausgabe doch eh nicht weiter...

atero

(Themenstarter)

Anmeldungsdatum:
26. März 2007

Beiträge: 94

klasse jetzt gehts, vielen Dank!

Antworten |