From 5bc9c722e3a74a37054e8a085eaabb4f3b74b062 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20R=2E=20Pietraszczyk?= Date: Sun, 5 Oct 2025 17:45:50 +0200 Subject: 2.251005-0:przem-ilford-expired-v3.scm --- script-fu/3.0/przem-ilford-expired-v3.scm | 138 ++++++++++++++++++++++++++++++ script-fu/3.0/przem-kodachrome-v3.scm | 2 +- script-fu/changelog.md | 2 + 3 files changed, 141 insertions(+), 1 deletion(-) create mode 100644 script-fu/3.0/przem-ilford-expired-v3.scm diff --git a/script-fu/3.0/przem-ilford-expired-v3.scm b/script-fu/3.0/przem-ilford-expired-v3.scm new file mode 100644 index 0000000..6aaecfb --- /dev/null +++ b/script-fu/3.0/przem-ilford-expired-v3.scm @@ -0,0 +1,138 @@ +; przem-ilford-expired-v3 - Fotografia imitująca przeterminowany film Ilforda +; 2025-10-05 - Przemysław R. Pietraszczyk +; licence: Public Domain +; ver. 2.251005-0 +; Ten 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 (przem-ilford-expired-v3 image drawable temperature strength apply brightness contrast 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)) + (layer (vector-ref drawable 0)) + (work-layer (car (gimp-layer-copy layer TRUE))) + (work-layer-second (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) + (gimp-image-insert-layer image work-layer-second 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)) + + (apply-quick-tint image work-layer work-layer-second image-width image-height saturation lightness hc cc) + + (let* ((layer (gimp-layer-new image "Curves" image-width image-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 8 #(0 0 24 22 129 138 255 255)) + )) + + + (gimp-image-undo-group-end image) + (gimp-displays-flush) + (gimp-context-pop) + ) +) + +(script-fu-register-filter "przem-ilford-expired-v3" + _"Ilford film expired" + _"Fotografia imitująca przeterminowany film Ilforda" + "Przemysław R. Pietraszczyk" + "Public Domain" + "2025-10-05" + "RGB*" + SF-ONE-OR-MORE-DRAWABLE + SF-ADJUSTMENT "Temperatura (K)" '(5550 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" '(1 -100 100 1 10 0 0) + SF-ADJUSTMENT _"Contrast" '(5 -100 100 1 10 0 0) + SF-ADJUSTMENT _"Saturation" '(5 -100 100 1 10 0 0) + SF-ADJUSTMENT _"Lightness" '(-35 -100 100 1 10 0 0) + SF-COLOR _"Highlight balance" '(211 95 0) + SF-COLOR _"Chrome balance" "black" + +) + +(script-fu-menu-register "przem-ilford-expired-v3" + "/Filters/PIETRASZCZYK/") + diff --git a/script-fu/3.0/przem-kodachrome-v3.scm b/script-fu/3.0/przem-kodachrome-v3.scm index 6a5961e..534d482 100644 --- a/script-fu/3.0/przem-kodachrome-v3.scm +++ b/script-fu/3.0/przem-kodachrome-v3.scm @@ -2,7 +2,7 @@ ; 2025-09-25 - Przemysław R. Pietraszczyk ; licence: Public Domain ; ver. 2.250929-0 -; To script-fu wykorzystuje funkcje ze skryptu 'chrome-it.scm' +; Ten script-fu wykorzystuje funkcje ze skryptu 'chrome-it.scm' ; Autorstwa Spencer Kimball (define (shadows val) diff --git a/script-fu/changelog.md b/script-fu/changelog.md index 5db137e..9c86863 100644 --- a/script-fu/changelog.md +++ b/script-fu/changelog.md @@ -1,3 +1,5 @@ +# [2.251005-0] przem-ilford-expired-v3.scm +* Nowy filtr, imitujący przeterminowane kolorowe filmy Ilforda # [2.251001-0] przem-oldschool-photography-v3.scm * Kolorowa fotografia przedwojenna, uzyskiwana za pomocą zmiany temeratury barwowej -- cgit v1.2.3