1.0. Kurven laden

Versionsgeschichte
Revision $Revision: 1.0 $ 2011-01-23 r.s

Das Kurven laden - Plugin öffnet die mit dem Kurvenwerkzeug geschriebenen Dateien und gibt Wertearrays für die Benutzung mit gimp-curves-spline oder gimp-curves-explicit zurück.

1.0.1. Das Plugin aktivieren

Sie benutzen dieses Werkzeug :

  • In Script-Fu mit dem Kommando (plug-in-curveloader KANÄLE DATEINAME).

1.0.2. "Kurven laden" Optionen

KANÄLE
0, 1, 2, 3, 4

Nur ein Array und die Elementanzahl dieses Arrays werden zurückgegeben, dabei repräsentiert 0 den Wertekanal, 1 den Rotkanal, 2 den Grünkanal , 3 den Blaukanal und 4 den Alphakanal. Sie können auch die vordefinierten Werte HISTOGRAM-VALUE, HISTOGRAM-RED, HISTOGRAM-GREEN, HISTOGRAM-BLUE oder HISTOGRAM-ALPHA benutzen.

5

Gibt alle Kanäle der Kurvendatei als Arrays zurück. Das erste Element ist die Anzahl der Elemente des Wertearrays, dann das Wertearray, dann die Anzahl der Elemente des Rotarrays, dann das Rotarray ...

DATEINAME

Der Dateiname der zu ladenden Kurvendatei.

1.0.3. "Kurven laden" Beispiele

Beispiele


Gibt die Kurve des Grünkanals aus der Datei mycurve zurück

;Zur Vereinfachung
(define HISTOGRAM-ALL 5)

;Hole die Grünkurve
(set! results (plug-in-curveloader HISTOGRAM-GREEN "mycurve"))

;Das erste Resultat ist immer die Elementanzahl
(set! elements (list-ref results 0))
;Dann kommt das Array mit den Werten
(set! thearray (list-ref results 1))

;Falls elements < 256 ist es eine weiche Kurve, sonst eine Freihand Kurve
(if (< elements 256)
    (gimp-curves-spline drawable HISTOGRAM-GREEN elements thearray)
    (gimp-curves-explicit drawable HISTOGRAM-GREEN elements thearray)
)

Gibt die Kurve des Rotkanals aus der Datei redcurve zurück

;Zur Vereinfachung
(define HISTOGRAM-ALL 5)

;Hole die Rotkurve
(set! results (plug-in-curveloader HISTOGRAM-RED "redcurve"))

;Das erste Resultat ist immer die Elementanzahl
(set! elements (list-ref results 0))
;Dann kommt das Array mit den Werten
(set! thearray (list-ref results 1))

;Wende die Rotkurve auf den Alphakanal an
;Warnung! geht bei fehlendem Alphakanal schief
(if (< elements 256)
    (gimp-curves-spline drawable HISTOGRAM-ALPHA elements thearray)
    (gimp-curves-explicit drawable HISTOGRAM-ALPHA elements thearray)
)

Wende alle Kurven aus der Datei allcurves auf alle Kanäle an

;Zur Vereinfachung
(define HISTOGRAM-ALL 5)

;Hole alle Kurven
(set! results (plug-in-curveloader HISTOGRAM-ALL "allcurves"))

;Beginn Argumente
(set! valuenum (list-ref results 0))
(set! valuearray (list-ref results 1))
(set! rednum (list-ref results 2))
(set! redarray (list-ref results 3))
(set! greennum (list-ref results 4))
(set! greenarray (list-ref results 5))
(set! bluenum (list-ref results 6))
(set! bluearray (list-ref results 7))
(set! alphanum (list-ref results 8))
(set! alphaarray (list-ref results 9))
;Ende Argumente

;Wende alle Kurven auf alle Kanäle an
(if (< valuenum 256)
    (gimp-curves-spline drawable HISTOGRAM-VALUE valuenum valuearray)
    (gimp-curves-explicit drawable HISTOGRAM-VALUE valuenum valuearray)
)
(if (< rednum 256)
    (gimp-curves-spline drawable HISTOGRAM-RED rednum redarray)
    (gimp-curves-explicit drawable HISTOGRAM-RED rednum redarray)
)
(if (< greennum 256)
    (gimp-curves-spline drawable HISTOGRAM-GREEN greennum greenarray)
    (gimp-curves-explicit drawable HISTOGRAM-GREEN greennum greenarray)
)
(if (< bluenum 256)
    (gimp-curves-spline drawable HISTOGRAM-BLUE bluenum bluearray)
    (gimp-curves-explicit drawable HISTOGRAM-BLUE bluenum bluearray)
)
;Warnung! geht bei fehlendem Alphakanal schief
(if (< alphanum 256)
    (gimp-curves-spline drawable HISTOGRAM-ALPHA alphanum alphaarray)
    (gimp-curves-explicit drawable HISTOGRAM-ALPHA alphanum alphaarray)
)

Wende alle Kurven aus der Datei allcurves auf alle Kanäle an, kurz geschrieben

;Zur Vereinfachung
(define HISTOGRAM-ALL 5)

;Hole alle Kurven
(set! results (plug-in-curveloader HISTOGRAM-ALL "allcurves"))

;Wende alle Kurven auf alle Kanäle an
(while (pair? results)
  (if (< (list-ref results 0) 256)
    (gimp-curves-spline drawable channel (list-ref results 0) (list-ref results 1))
    (gimp-curves-explicit drawable channel (list-ref results 0) (list-ref results 1))
    )
  (set! channel (+ channel 1))
  ;Alpha überspringen falls es keinen Alphakanal gibt
  (if (= (car(gimp-drawable-has-alpha drawable)) FALSE)
    (if (= channel 4) (set! results (cddr results)))
    )
  ;Alpha überspringen falls es keinen Alphakanal gibt
  (set! results (cddr results))
)

Laden Sie dieBeispiel Scheme Datei herunter und kopieren Sie die Datei in den Skripteordner.

1.0.4. Bemerkungen

Unterstützte Kurvendateien


Alte GIMP Kurvendateien, die folgendermaßen aussehen:

# GIMP Curves File
0 0 -1 -1 -1 -1 -1 -1 -1 -1 60 120 ... 255 255
0 0 ... 80 48 ... 149 192 -1 -1 -1 -1 191 248 ... 255 255
0 0 -1 -1 -1 -1 -1 -1 70 81 ... 159 220 ... 255 255
0 27 ... 255 213
0 0 -1 -1 -1 -1 20 100 ... 255 255

mit 34 Werten je Linie (Die Punkte sind nur für die bessere Übersicht).
Die Linien repräsentieren die Kanäle Wert, Rot, Grün, Blau und Alpha.
Die Werte sind paarweise angeordnete Ein- und Ausgabefarbwerte im Bereich
zwischen 0 und 255. Werte von -1 werden ignoriert.

Neue GIMP Kurvendateien, die folgendermaßen aussehen:

# GIMP curves tool settings

(time 0)
(channel value)
(curve
  (curve-type smooth)
  (n-points 17)
  (points 34 0.000000 0.000000 ... 1.000000 0.735102)
  (n-samples 256)
  (samples 256 0.000000 0.003922 ... 0.992157 0.996078 1.000000))
(time 0)
(channel red)
(curve
  (curve-type smooth)
  (n-points 17)
  (points 34 0.000000 1.000000 ... 0.971053 0.000000)
  (n-samples 256)
  (samples 256 1.000000 0.995962 0.991923 ... 0.000000 0.000000))
(time 0)
(channel green)
(curve
  (curve-type free)
  (n-points 17)
  (points 34 0.000000 0.000000 ... 1.000000 1.000000)
  (n-samples 256)
  (samples 256 0.000000 0.003922 0.007843 ... 0.996078 1.000000))
(time 0)
(channel blue)
(curve
  (curve-type smooth)
  (n-points 17)
  (points 34 0.000000 0.000000 ... -1.000000 -1.000000 1.000000 1.000000)
  (n-samples 256)
  (samples 256 0.000000 0.003922 0.007843 ... 1.000000))
(time 0)
(channel alpha)
(curve
  (curve-type smooth)
  (n-points 17)
  (points 34 0.000000 0.000000 ... 1.000000 1.000000)
  (n-samples 256)
  (samples 256 0.000000 ... 0.937255 0.941176 0.952941 ... 1.000000))

# end of curves tool settings

mit 34 oder 256 Werten je Kanal (Die Punkte sind nur für die bessere Übersicht).
Falls curve-type den Wert smooth hat, gibt das Plugin eine weiche Kurve zurück,
sonst eine Freihandkurve. Die Werte sind paarweise angeordnete (weiche Kurve) Ein-
und Ausgabefarbwerte im Bereich von 0.0 bis 1.0 und werden deshalb mit 255
multipliziert. Werte mit -1 (in der weichen Kurve) werden wieder ignoriert.
Die Dateiverarbeitungsroutine prüft nicht nach ob die Elementanzahl in der weichen
Kurve exakt 34 Punkte beträgt, also werden auch Kurven mit minimal zwei validen
Punktepaaren akzepiert (gilt für beide Kurvendateitypen).