PDA

Vollständige Version anzeigen : Brauche Hilfe bei Script-Fu (bitte...)


Riot23
21.09.2006, 17:26
Hallo Forengemeinde,

ich habe ein Problem mit der Erstellung eines Skriptes...
Ich sollte dazu anmerken, dass ich ein absoluter Anfänger in Sachen Script-Fu bin.

Das Skript, dass ich machen soll, soll folgende Funktionalität abdecken:
Aus einem Verzeichnis sollen alle sich darin befindlichen Bilder auf eine bestimmte Grösse skaliert werden.
Anschließend sollen all diese skalierten Bilder ausgedruckt werden.

Den ersten Teil, also die "SKalierung" habe ich dank eines Tutorials aus dem Netz.
Damit kann ich ein Verzeichnis und die gewünschte Höhe und Breite angeben und anschließend werden alle BIlder aus dem Verzeichnis nacheinander in GIMP geladen, skaliert und gespeichert.

Dieses Skript sieht folgendermassen aus:

(define (script-fu-batch-resize globexp newx newy)
(define (resize-img n f)
(let* ((fname (car f))
(img (car (gimp-file-load 1 fname fname))))
(gimp-image-undo-disable img)
(gimp-image-scale img newx newy 0 0)
(gimp-file-save 1 img (car (gimp-image-get-active-drawable img)) fname fname)
(gimp-image-delete img)
)
(if (= n 1) 1 (resize-img (- n 1) (cdr f)))
)
(set! files (file-glob globexp 0))
(resize-img (car files) (car (cdr files)))
)
; Im GIMP und im Menü registrieren
(script-fu-register "script-fu-batch-resize"
_"_Mehrere Bilder verkleinern..."
"Mehrere Bilder auf einmal auf die gleiche Größe bringen"
"Richard Hirner"
"2006, Richard Hirner"
"Sep 7, 2006"
""
SF-STRING "Zu konvertierende Dateien" "/pfad/zu/bildern/*.jpg"
SF-VALUE "Neue horizontale Größe" "1280"
SF-VALUE "Neue vertikale Größe" "1024")
(script-fu-menu-register "script-fu-batch-resize"
"<Toolbox>/Xtns/Misc")


Das klappt auch soweit wunderbar...
Nur was muss ich da jetzt noch dran ändern, damit die Bilder auch noch alle ausgedruckt werden???
Ich bin absolut überfragt und finde dazu auch keine Tutorials oder DOkumentationen.
Ich weiss, dass die gesuchte Prozedur "file-print" heisst, aber was muss ich bei den Paramtern dazu angeben und wie und wo im COde muss ich das dann einfügen???
Wenn mir hier jemand damit helfen könnte, wäre ich sehr dankbar...

Ach ja, der Druck soll auf einem IP-Drucker erfolgen...

Schonmal im Vorraus an alle Helfer ein riesiges Dankeschön!!!

redforce
21.09.2006, 17:47
Verwende den PDB Prozedur-Browser. Falls du GIMP mit Gnome-Print hast, funktioniert vielleicht folgende Änderung (ungetestet):

;...
(gimp-image-scale img newx newy 0 0)
(gimp-file-save 1 img (car (gimp-image-get-active-drawable img)) fname fname)
(file-print-gnome 1 img (car (gimp-image-get-active-drawable img)))
(gimp-image-delete img)
;...

lupus
21.09.2006, 20:15
Hallo Riot23,
herzlich Willkommen im Forum.
Nur eine Frage zwischendurch, ist das eine Praxisaufgabe oder eine Schulaufgabe?
Für letzteres hast du ja jetzt hoffentlich eine passende Antwort auf dein Problem bekommen. Ich freue mich auch immer wenn sich Leute mit Script-Fu auseinandersetzten und so helfen besser und vorallem mehrbessere Scripte entstehen.

Wenn es lediglich um eine in der Praxis zu lösende Aufgabe geht, würde ich eher
einen anderen Weg gehen, ist mir zumindestens übersichtlicher.
über eine einfach for-Schleife in der bash oder dgl, mit convert -resize und lpr Datei.

juergen