Page 1 of 1

Arbeitsvereinfachung mit Skript-Fu unter Gimp

Posted: 24. Jan 2012 21:02
by hastifranki
Hallo,

ich versuche mich gerade in Skript-Fu unter Gimp einzuarbeiten.

Ich suche eine Prozedur, die mir das aktive Bildfenster (Nr.) zurück gibt. Wenn ich eine Datei über Skript-Fu öffne, erhalte ich die Bild-Nr. Die Datei ist aber schon geöffnet, so dass ich die Bild-Nr. manuell eingeben muss.

Code: Select all

(define (schaerfen a0) 
(define a1 (plug-in-decompose 1 a0 (car (gimp-image-get-active-drawable a0)) "HSV" 0))
(plug-in-unsharp-mask 1 (car (cdr (cdr a1))) (car (gimp-image-active-drawable (car (cdr (cdr a1))))) 5 0.5 0)
(plug-in-unsharp-mask 1 (car (cdr (cdr a1))) (car (gimp-image-active-drawable (car (cdr (cdr a1))))) 5 0.5 0)
(define a2 (plug-in-compose 1 (car a1) 2 (car (cdr a1)) (car (cdr (cdr a1))) 0 "HSV"))
(gimp-display-new (car a2)))
; Im GIMP und im Menü registrieren
(script-fu-register "schaerfen"
	_"_Bild schärfen" ;Menutext
	"Bilder schärfen"
	"Max Mustermann"
	"2012, Max Mustermann"
	"Jan 24, 2012"
	""
	SF-VALUE "Bitte das Bildfenster eingeben" "1")
 (script-fu-menu-register "schaerfen"
 "<Toolbox>/Xtns/MeineSkripte/Bilder schärfen"&#41;

Das Skript extrahiert die Kanäle im HSV-Farbmodus. Das Bild „*Wert.*“ wird unscharf maskiert. Danach wird alles wieder zusammengefügt.

Die Schrittfolge habe ich bisher immer manuell durchgeführt. Um Farbfehler zu vermeiden, habe ich unscharf maskieren nicht direkt ausgeführt. Mit dem Skript möchte ich mir die Arbeit vereinfachen.

Vielleicht hat jemand eine Idee. Möglicherweise fehlt nur noch ein passendes Plugin.

Viele Grüße
Frank

Posted: 25. Jan 2012 22:04
by Janka
Ich biete

Code: Select all

&#40;define &#40;schaerfen a0 d0&#41;
&#40;define a1 &#40;plug-in-decompose 1 a0 &#40;car &#40;gimp-image-get-active-drawable a0&#41;&#41; "HSV" 0&#41;&#41;
&#40;plug-in-unsharp-mask 1 &#40;car &#40;cdr &#40;cdr a1&#41;&#41;&#41; &#40;car &#40;gimp-image-active-drawable &#40;car &#40;cdr &#40;cdr a1&#41;&#41;&#41;&#41;&#41; 5 0.5 0&#41;
&#40;plug-in-unsharp-mask 1 &#40;car &#40;cdr &#40;cdr a1&#41;&#41;&#41; &#40;car &#40;gimp-image-active-drawable &#40;car &#40;cdr &#40;cdr a1&#41;&#41;&#41;&#41;&#41; 5 0.5 0&#41;
&#40;define a2 &#40;plug-in-compose 1 &#40;car a1&#41; d0 &#40;car &#40;cdr a1&#41;&#41; &#40;car &#40;cdr &#40;cdr a1&#41;&#41;&#41; 0 "HSV"&#41;&#41;
&#40;gimp-display-new &#40;car a2&#41;&#41;&#41;
; Im GIMP und im Menü registrieren
&#40;script-fu-register "schaerfen"
   _"_Bild schärfen" ;Menutext
   "Bilder schärfen"
   "Max Mustermann"
   "2012, Max Mustermann"
   "Jan 24, 2012"
   ""
   SF-IMAGE    "Image" 0
   SF-DRAWABLE "Layer" 0&#41;
&#40;script-fu-menu-register "schaerfen"
   "<Toolbox>/Xtns/MeineSkripte/Bilder schärfen"&#41;
Hausaufgabe: Im Kopf Diff machen und verstehen was und warum es geändert wurde. Prozeduren-Browser in Gimp entdecken (Hilfe->Prozeduren-Browser) und nutzen.

Janka

Posted: 26. Jan 2012 11:06
by hastifranki
Hallo Janka,

vielen Dank! Die Parametertypen hatte ich mir noch nicht gründlich genug angesehen.

Im folgenden Skript habe ich die Zeile 2 noch etwas vereinfacht. Außerdem wird in eine Logdatei geschrieben. (Diese Zeilen kann man wieder auskommentieren, wenn alles richtig läuft.)

Code: Select all

&#40;define &#40;schaerfen a0 d0&#41;
&#40;define a1 &#40;plug-in-decompose 1 a0 d0 "HSV" 0&#41;&#41;
&#40;plug-in-unsharp-mask 1 &#40;car &#40;cdr &#40;cdr a1&#41;&#41;&#41; &#40;car &#40;gimp-image-active-drawable &#40;car &#40;cdr &#40;cdr a1&#41;&#41;&#41;&#41;&#41; 5 0.5 0&#41;
&#40;plug-in-unsharp-mask 1 &#40;car &#40;cdr &#40;cdr a1&#41;&#41;&#41; &#40;car &#40;gimp-image-active-drawable &#40;car &#40;cdr &#40;cdr a1&#41;&#41;&#41;&#41;&#41; 5 0.5 0&#41;
&#40;define a2 &#40;plug-in-compose 1 &#40;car a1&#41; d0 &#40;car &#40;cdr a1&#41;&#41; &#40;car &#40;cdr &#40;cdr a1&#41;&#41;&#41; 0 "HSV"&#41;&#41;
&#40;gimp-display-new &#40;car a2&#41;&#41;
;In Logdatei schreiben&#58;
&#40;define p1 &#40;open-output-file "Gimp_Skript_schaerfen.log"&#41;&#41;
&#40;newline p1&#41;
&#40;write "a0 &#40;Image&#41; &#58; " p1&#41;
&#40;write a0 p1&#41;
&#40;newline p1&#41;
&#40;write "do &#40;Layer&#41; &#58; " p1&#41;
&#40;write d0 p1&#41;
&#40;newline p1&#41;
&#40;write "a1 &#58; " p1&#41;
&#40;write a1 p1&#41;
&#40;newline p1&#41;
&#40;write "a2 &#58; " p1&#41;
&#40;write a2 p1&#41;
&#40;newline p1&#41;
&#40;write "&#40;car &#40;gimp-image-active-drawable &#40;car &#40;cdr &#40;cdr a1&#41;&#41;&#41;&#41;&#41; &#58;" p1&#41;
&#40;write &#40;car &#40;gimp-image-active-drawable &#40;car &#40;cdr &#40;cdr a1&#41;&#41;&#41;&#41;&#41; p1&#41;
&#40;newline p1&#41;
&#40;close-output-port p1&#41;
&#41;
; Im GIMP und im Menü registrieren
&#40;script-fu-register "schaerfen"
   _"_Bild schärfen" ;Menutext
   "Bilder schärfen"
   "Max Mustermann"
   "2012, Max Mustermann"
   "Jan 24, 2012"
   ""
   SF-IMAGE    "Image" 0
   SF-DRAWABLE "Layer" 0&#41;
&#40;script-fu-menu-register "schaerfen"
   "<Toolbox>/Xtns/MeineSkripte/Bilder schärfen"&#41; 
Viele Grüße
Frank

Posted: 27. Jan 2012 18:18
by hastifranki
Hallo,

ich habe das Skript entsprechend den Vorgaben aus der Gimp-Hilfe noch etwas verbessert:

Code: Select all

&#40;define &#40;schaerfen a0 d0&#41;
&#40;let* 	&#40;	&#40;a1 &#40;plug-in-decompose 1 a0 d0 "HSV" 0&#41;&#41; &#40;a2 0&#41;
		&#40;d1 &#40;car &#40;gimp-image-active-drawable &#40;car &#40;cdr &#40;cdr a1&#41;&#41;&#41;&#41;&#41;&#41;
		;Logdatei öffnen
		&#40;p1 &#40;open-output-file "Gimp_Skript_schaerfen.log"&#41;&#41;
	&#41;
	&#40;plug-in-unsharp-mask 1 &#40;car &#40;cdr &#40;cdr a1&#41;&#41;&#41; d1 5 0.5 0&#41;
	&#40;plug-in-unsharp-mask 1 &#40;car &#40;cdr &#40;cdr a1&#41;&#41;&#41; d1 5 0.5 0&#41;
	&#40;set! a2 &#40;plug-in-compose 1 &#40;car a1&#41; d1 &#40;car &#40;cdr a1&#41;&#41; &#40;car &#40;cdr &#40;cdr a1&#41;&#41;&#41; 0 "HSV"&#41;&#41;
	;Log schreiben und danach Logdatei schließen&#58;
	&#40;gimp-display-new &#40;car a2&#41;&#41;
	&#40;newline p1&#41; &#40;write "a0 &#40;Image&#41; &#58; " p1&#41; &#40;write a0 p1&#41;
	&#40;newline p1&#41; &#40;write "do &#40;Layer&#41; &#58; " p1&#41; &#40;write d0 p1&#41;
	&#40;newline p1&#41; &#40;write "d1 &#40;Layer&#41; &#58; " p1&#41; &#40;write d1 p1&#41;
	&#40;newline p1&#41; &#40;write "a1 &#58; " p1&#41; &#40;write a1 p1&#41;
	&#40;newline p1&#41; &#40;write "a2 &#58; " p1&#41; &#40;write a2 p1&#41; &#40;newline p1&#41;
	&#40;close-output-port p1&#41;
&#41;&#41;
; Im GIMP und im Menü registrieren
&#40;script-fu-register "schaerfen"
   _"_Bild schärfen" ;Menutext
   "Bilder schärfen"
   "Max Mustermann"
   "2012, Max Mustermann"
   "Jan 27, 2012"
   ""
   SF-IMAGE    "Image" 0
   SF-DRAWABLE "Layer" 0&#41;
&#40;script-fu-menu-register "schaerfen"
   "<Toolbox>/Xtns/MeineSkripte/Bilder schärfen"&#41;
VG
Frank