diff options
Diffstat (limited to 'script-fu')
-rw-r--r-- | script-fu/3.0/przem-kodachrome-v3.scm | 159 | ||||
-rw-r--r-- | script-fu/3.0/przem-oldschool-photography-v3.scm | 252 | ||||
-rw-r--r-- | script-fu/changelog.md | 7 |
3 files changed, 241 insertions, 177 deletions
diff --git a/script-fu/3.0/przem-kodachrome-v3.scm b/script-fu/3.0/przem-kodachrome-v3.scm new file mode 100644 index 0000000..6a5961e --- /dev/null +++ b/script-fu/3.0/przem-kodachrome-v3.scm @@ -0,0 +1,159 @@ +; przem-kodachrome-v3 - Fotografia z okresu 20-sto lecia między wojennego
+; 2025-09-25 - Przemysław R. Pietraszczyk
+; licence: Public Domain
+; ver. 2.250929-0
+; To script-fu wykorzystuje funkcje ze skryptu 'chrome-it.scm'
+; Autorstwa Spencer Kimball
+
+(define (shadows val)
+ (/ (* 0.96 val) 2.55))
+
+(define (midtones val)
+ (/ val 2.55))
+
+(define (highlights val)
+ ; The result is used as "gimp-drawable-color-balance" color parameter
+ ; and thus must be restricted to -100.0 <= highlights <= 100.0.
+ (min (/ (* 1.108 val) 2.55) 100.0))
+
+(define (rval col)
+ (car col))
+
+(define (gval col)
+ (cadr col))
+
+(define (bval col)
+ (caddr col))
+
+
+
+(define (apply-quick-tint img layer1 layer2 width height saturation lightness hc cc)
+
+ (gimp-drawable-color-balance layer1 TRANSFER-SHADOWS 1
+ (shadows (rval hc))
+ (shadows (gval hc))
+ (shadows (bval hc)))
+ (gimp-drawable-color-balance layer1 TRANSFER-MIDTONES 1
+ (midtones (rval hc))
+ (midtones (gval hc))
+ (midtones (bval hc)))
+ (gimp-drawable-color-balance layer1 TRANSFER-HIGHLIGHTS 1
+ (highlights (rval hc))
+ (highlights (gval hc))
+ (highlights (bval hc)))
+
+ (gimp-drawable-color-balance layer2 TRANSFER-SHADOWS 1
+ (shadows (rval cc))
+ (shadows (gval cc))
+ (shadows (bval cc)))
+ (gimp-drawable-color-balance layer2 TRANSFER-MIDTONES 1
+ (midtones (rval cc))
+ (midtones (gval cc))
+ (midtones (bval cc)))
+ (gimp-drawable-color-balance layer2 TRANSFER-HIGHLIGHTS 1
+ (highlights (rval cc))
+ (highlights (gval cc))
+ (highlights (bval cc)))
+
+ (gimp-drawable-hue-saturation layer2 HUE-RANGE-ALL
+ 0.0
+ lightness
+ saturation
+ 0.0))
+
+(define (create-highlights-curve adjustment)
+ (let ((curve-data (make-vector 256 'byte)))
+ (do ((i 0 (+ i 1)))
+ ((= i 256))
+ (if (> i 128)
+ ; Światła - zastosuj regulację
+ (aset curve-data i (min 255 (max 0 (+ i (* (- i 128) adjustment)))))
+ ; Cienie - bez zmian
+ (aset curve-data i i)
+ )
+ )
+ curve-data
+ )
+)
+
+(define (create-shadows-curve adjustment)
+ (let ((curve-data (make-vector 256 'byte)))
+ (do ((i 0 (+ i 1)))
+ ((= i 256))
+ (if (< i 128)
+ ; Cienie - zastosuj regulację
+ (aset curve-data i (min 255 (max 0 (+ i (* i adjustment)))))
+ ; Światła - bez zmian
+ (aset curve-data i i)
+ )
+ )
+ curve-data
+ )
+)
+
+;(define (przem-oldschool-photogrphy-v3 image drawable temperature strength tint-use
+; brightness contrast highlights shadows whites blacks saturation lightness hc cc)
+(define (przem-kodachrome-v3 image drawable highlights shadows saturation lightness hc cc)
+
+ ; use v3 binding of return args from PDB
+ ;(script-fu-use-v3)
+
+ (let* (
+ ;(temperature-factor (/ (- temperature 6500) 1000))
+ ;(red-adjust (* temperature-factor (- strength)))
+ ;(blue-adjust (* temperature-factor strength))
+ ;(brightness-value (/ brightness 100))
+ ;(contrast-value (/ contrast 100))
+ (adjust-value-highlights (/ highlights 100))
+ (adjust-value-shadow (/ shadows 100))
+ (width (car (gimp-image-get-width image)))
+ (height (car (gimp-image-get-height image)))
+ (layer (vector-ref drawable 0))
+ (work-layer (car (gimp-layer-copy layer TRUE)))
+ (work-layer-second (car (gimp-layer-copy layer TRUE)))
+ ;(work-layer-levels (car (gimp-layer-copy layer TRUE)))
+ ;(work-layer-brightness-contrast (car (gimp-layer-copy layer TRUE)))
+ (curves-layer (gimp-layer-new image "Cross" width height RGB-IMAGE 100 LAYER-MODE-NORMAL))
+ (blacks 1)
+ (whites 0)
+ )
+ (gimp-image-undo-group-start image)
+ (gimp-context-push)
+
+ (gimp-image-insert-layer image work-layer 0 -1)
+ (gimp-image-insert-layer image work-layer-second 0 -1)
+
+ (apply-quick-tint image work-layer work-layer-second width height saturation lightness hc cc)
+
+ ; Regulacja przez poziomy
+ ; low imput - high input - gamma - output range
+ (gimp-drawable-levels work-layer 0
+ blacks
+ whites
+ 1.0 1.0 1.0 0 0)
+
+
+ (gimp-image-undo-group-end image)
+ (gimp-displays-flush)
+ (gimp-context-pop)
+ )
+)
+
+(script-fu-register-filter "przem-kodachrome-v3"
+ _"Kodachrome"
+ _"Imitacja Kodachrome"
+ "PRP"
+ "Public Domain"
+ "2025-09-25"
+ "RGB*"
+ SF-ONE-OR-MORE-DRAWABLE
+ SF-ADJUSTMENT _"Highlights" '(-80 -100 100 1 10 0 0)
+ SF-ADJUSTMENT _"Shadow" '(30 -100 100 1 10 0 0)
+ SF-ADJUSTMENT _"Saturation" '(-80 -100 100 1 10 0 0)
+ SF-ADJUSTMENT _"Lightness" '(24 -100 100 1 10 0 0)
+ SF-COLOR _"Highlight balance" '(211 95 0)
+ SF-COLOR _"Chrome balance" "black"
+)
+
+(script-fu-menu-register "przem-kodachrome-v3"
+ "<Image>/Filters/PIETRASZCZYK/")
diff --git a/script-fu/3.0/przem-oldschool-photography-v3.scm b/script-fu/3.0/przem-oldschool-photography-v3.scm index 5585340..36c3459 100644 --- a/script-fu/3.0/przem-oldschool-photography-v3.scm +++ b/script-fu/3.0/przem-oldschool-photography-v3.scm @@ -1,177 +1,75 @@ -; przem-oldschool-photogrphy-v3.sh - Fotografia ze starej szkoły
-; 2025-09-25 - Przemysław R. Pietraszczyk
-; licence: Public Domain
-; ver. 2.250925-2
-
-(define (shadows val)
- (/ (* 0.96 val) 2.55))
-
-(define (midtones val)
- (/ val 2.55))
-
-(define (highlights val)
- ; The result is used as "gimp-drawable-color-balance" color parameter
- ; and thus must be restricted to -100.0 <= highlights <= 100.0.
- (min (/ (* 1.108 val) 2.55) 100.0))
-
-(define (rval col)
- (car col))
-
-(define (gval col)
- (cadr col))
-
-(define (bval col)
- (caddr col))
-
-
-
-(define (apply-quick-tint img layer1 layer2 width height saturation lightness hc cc)
-
- (gimp-drawable-color-balance layer1 TRANSFER-SHADOWS 1
- (shadows (rval hc))
- (shadows (gval hc))
- (shadows (bval hc)))
- (gimp-drawable-color-balance layer1 TRANSFER-MIDTONES 1
- (midtones (rval hc))
- (midtones (gval hc))
- (midtones (bval hc)))
- (gimp-drawable-color-balance layer1 TRANSFER-HIGHLIGHTS 1
- (highlights (rval hc))
- (highlights (gval hc))
- (highlights (bval hc)))
-
- (gimp-drawable-color-balance layer2 TRANSFER-SHADOWS 1
- (shadows (rval cc))
- (shadows (gval cc))
- (shadows (bval cc)))
- (gimp-drawable-color-balance layer2 TRANSFER-MIDTONES 1
- (midtones (rval cc))
- (midtones (gval cc))
- (midtones (bval cc)))
- (gimp-drawable-color-balance layer2 TRANSFER-HIGHLIGHTS 1
- (highlights (rval cc))
- (highlights (gval cc))
- (highlights (bval cc)))
-
- (gimp-drawable-hue-saturation layer2 HUE-RANGE-ALL
- 0.0
- lightness
- saturation
- 0.0))
-
-(define (create-highlights-curve adjustment)
- (let ((curve-data (make-vector 256 'byte)))
- (do ((i 0 (+ i 1)))
- ((= i 256))
- (if (> i 128)
- ; Światła - zastosuj regulację
- (aset curve-data i (min 255 (max 0 (+ i (* (- i 128) adjustment)))))
- ; Cienie - bez zmian
- (aset curve-data i i)
- )
- )
- curve-data
- )
-)
-
-(define (create-shadows-curve adjustment)
- (let ((curve-data (make-vector 256 'byte)))
- (do ((i 0 (+ i 1)))
- ((= i 256))
- (if (< i 128)
- ; Cienie - zastosuj regulację
- (aset curve-data i (min 255 (max 0 (+ i (* i adjustment)))))
- ; Światła - bez zmian
- (aset curve-data i i)
- )
- )
- curve-data
- )
-)
-
-(define (przem-oldschool-photogrphy-v3 image drawable temperature strength tint-use
- contrast highlights shadows whites blacks saturation lightness hc cc)
-
- ; use v3 binding of return args from PDB
- ;(script-fu-use-v3)
-
- (let* (
- (temperature-factor (/ (- temperature 6500) 1000))
- (red-adjust (* temperature-factor (- strength)))
- (blue-adjust (* temperature-factor strength))
- (contrast-value (/ contrast 100))
- (adjust-value-highlights (/ highlights 100))
- (adjust-value-shadow (/ shadows 100))
- (width (car (gimp-image-get-width image)))
- (height (car (gimp-image-get-height image)))
- (layer (vector-ref drawable 0))
- (work-layer (car (gimp-layer-copy layer TRUE)))
- (work-layer-second (car (gimp-layer-copy layer TRUE)))
- (curves-layer (gimp-layer-new image "Cross" width height RGB-IMAGE 100 LAYER-MODE-NORMAL))
- )
- (gimp-image-undo-group-start image)
- (gimp-context-push)
-
- (gimp-image-insert-layer image work-layer 0 -1)
- (gimp-image-insert-layer image work-layer-second 0 -1)
-
- (if (= tint-use TRUE)
- (apply-quick-tint image work-layer work-layer-second width height saturation lightness hc cc))
- (if (= tint-use FALSE)
- ; Balans kolorów na podstawie temp. barwowej z kontrolą siły efektu
- (gimp-drawable-color-balance work-layer TRANSFER-SHADOWS 1 red-adjust 0 blue-adjust)
- (gimp-drawable-color-balance work-layer TRANSFER-MIDTONES 1 red-adjust 0 blue-adjust)
- (gimp-drawable-color-balance work-layer TRANSFER-HIGHLIGHTS 1 red-adjust 0 blue-adjust))
-
- (gimp-drawable-brightness-contrast work-layer 0 contrast-value)
-
- ; Regulacja przez poziomy
- ; low imput - high input - gamma - output range
- (gimp-drawable-levels work-layer 0
- blacks
- whites
- 1.0 1.0 1.0 0 0)
-
- ; CROSSOWANIE - domaga się wartości numerycznej w pierwszym argumenice - dziwne w przem-traditional-photo.scm - działa bez zarzutu
- ;(set! curves-layer (gimp-image-merge-visible-layers image CLIP-TO-IMAGE))
- ;(gimp-drawable-curves-spline curves-layer HISTOGRAM-VALUE 10 #(0 0 64 90 128 160 192 230 255 255))
- ;(gimp-drawable-curves-spline curves-layer HISTOGRAM-RED 10 #(0 0 64 50 128 180 192 230 255 255))
- ;(gimp-drawable-curves-spline curves-layer HISTOGRAM-GREEN 10 #(0 0 64 80 128 120 192 200 255 255))
- ;(gimp-drawable-curves-spline curves-layer HISTOGRAM-BLUE 10 #(0 0 64 30 128 150 192 220 255 255))
- ; lub
- ;(define value #(0 0 64 90 128 160 192 230 255 255))
- ;(gimp-drawable-curves-spline curves-layer HISTOGRAM-VALUE 10 value)
-
-
-
-
- (gimp-image-undo-group-end image)
- (gimp-displays-flush)
- (gimp-context-pop)
- )
-)
-
-(script-fu-register-filter "przem-oldschool-photogrphy-v3"
- _"Oldchool photography"
- _"Fotografia ze starej szkoły"
- "PRP"
- "Public Domain"
- "2025-09-25"
- "RGB*"
- SF-ONE-OR-MORE-DRAWABLE
- SF-ADJUSTMENT "Temperatura (K)" '(5150 1000 10000 100 1000 0 1)
- SF-ADJUSTMENT "Siła efektu" '(1.0 0.1 3.0 0.1 0.5 1 0)
- SF-TOGGLE "Tint use" FALSE
- SF-ADJUSTMENT _"Contrast" '(-30 -100 100 1 10 0 0)
- SF-ADJUSTMENT _"Highlights" '(-80 -100 100 1 10 0 0)
- SF-ADJUSTMENT _"Shadow" '(30 -100 100 1 10 0 0)
- SF-ADJUSTMENT _"Whites" '(0 0 1 0.1 0.1 2 0)
- SF-ADJUSTMENT _"Blacks" '(1 0 1 0.1 0.1 2 0)
- SF-ADJUSTMENT _"Saturation" '(-80 -100 100 1 10 0 0)
- SF-ADJUSTMENT _"Lightness" '(-47 -100 100 1 10 0 0)
- SF-COLOR _"Highlight balance" '(211 95 0)
- SF-COLOR _"Chrome balance" "black"
-)
-
-(script-fu-menu-register "przem-oldschool-photogrphy-v3"
- "<Image>/Filters/PIETRASZCZYK/")
+; przem-oldschool-photography-v3 - Fotografia z okresu 20-sto lecia między wojennego +; 2025-10-01 - Przemysław R. Pietraszczyk +; licence: Public Domain +; ver. 2.251001-0 + + + +(define (curves image width height) + ;(gimp-drawable-curves-spline layer1 HISTOGRAM-VALUE (spline-chrome-it)) + (let* ((layer (gimp-layer-new image "Curves" width height RGB-IMAGE 100 LAYER-MODE-NORMAL)) + (set! layer (gimp-image-merge-visible-layers image CLIP-TO-IMAGE)) + (gimp-drawable-curves-spline layer HISTOGRAM-VALUE 12 #(0 0 51 45 102 95 153 158 204 209 255 255)) + )) +) + + +(define (przem-oldschool-photography-v3 image drawable temperature strength apply brightness contrast) + + ; use v3 binding of return args from PDB + ;(script-fu-use-v3) + + (let* ( + (temperature-factor (/ (- temperature 6500) 1000)) + (red-adjust (* temperature-factor (- strength))) + (blue-adjust (* temperature-factor strength)) + (brightness-value (/ brightness 100)) + (contrast-value (/ contrast 100)) + (layer (vector-ref drawable 0)) + (work-layer (car (gimp-layer-copy layer TRUE))) + (work-layer-brightness-contrast (car (gimp-layer-copy layer TRUE))) + (image-width (car (gimp-image-get-width image))) + (image-height (car (gimp-image-get-height image))) + ) + + (gimp-image-undo-group-start image) + (gimp-context-push) + + (gimp-image-insert-layer image work-layer 0 -1) + (if (= apply TRUE) + (gimp-image-insert-layer image work-layer-brightness-contrast 0 -1)) + + ; Balans kolorów na podstawie temp. barwowej z kontrolą siły efektu + ; (gimp-message (string-append "Choice ")) + (gimp-drawable-color-balance work-layer TRANSFER-SHADOWS TRUE red-adjust 0 blue-adjust) + (gimp-drawable-color-balance work-layer TRANSFER-MIDTONES TRUE red-adjust 0 blue-adjust) + (gimp-drawable-color-balance work-layer TRANSFER-HIGHLIGHTS TRUE red-adjust 0 blue-adjust) + (if (= apply TRUE) + (gimp-drawable-brightness-contrast work-layer-brightness-contrast brightness-value contrast-value)) + + (curves image image-width image-height) + + (gimp-image-undo-group-end image) + (gimp-displays-flush) + (gimp-context-pop) + ) +) + +(script-fu-register-filter "przem-oldschool-photography-v3" + _"Oldschool Photography" + _"Nawiązanie do fotografii 20-sto lecia międzywojennego" + "PRP" + "Public Domain" + "2025-10-01" + "RGB*" + SF-ONE-OR-MORE-DRAWABLE + SF-ADJUSTMENT "Temperatura (K)" '(5150 1000 10000 100 1000 0 1) + SF-ADJUSTMENT "Siła efektu" '(1.0 0.1 3.0 0.1 0.5 1 0) + SF-TOGGLE _"Apply Brightness and Contrast" FALSE + SF-ADJUSTMENT _"Brightness" '(0 -100 100 1 10 0 0) + SF-ADJUSTMENT _"Contrast" '(-30 -100 100 1 10 0 0) + +) + +(script-fu-menu-register "przem-oldschool-photography-v3" + "<Image>/Filters/PIETRASZCZYK/") diff --git a/script-fu/changelog.md b/script-fu/changelog.md index 2cac737..5db137e 100644 --- a/script-fu/changelog.md +++ b/script-fu/changelog.md @@ -1,3 +1,10 @@ + +# [2.251001-0] przem-oldschool-photography-v3.scm +* Kolorowa fotografia przedwojenna, uzyskiwana za pomocą zmiany temeratury barwowej + +# [2.250929-0] przem-kodachrome-v3.scm +* Ostateczne zmiany w script-fu dotyczącego imitacji Kodachrome, zmiana nazwy. + # [2.250926-0] przem-oldschool-photography-v3.scm * Zdjęcia Chromatc dla wersji 3.0 |