From 1475db22254382c234f6d9d67c94c46a34cca3e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw?= Date: Thu, 25 Dec 2025 02:53:28 +0100 Subject: 2.251224-0:przem-surreal-v3 --- script-fu/3.0/przem-oldschool-photogrphy-v3.scm | 156 --------------------- .../3.0/przem-surreal-v3 \342\200\224 kopia.scm" | 81 +++++++++++ script-fu/3.0/przem-surreal-v3.scm | 72 ++++++++++ script-fu/changelog.md | 5 +- 4 files changed, 157 insertions(+), 157 deletions(-) delete mode 100644 script-fu/3.0/przem-oldschool-photogrphy-v3.scm create mode 100644 "script-fu/3.0/przem-surreal-v3 \342\200\224 kopia.scm" create mode 100644 script-fu/3.0/przem-surreal-v3.scm diff --git a/script-fu/3.0/przem-oldschool-photogrphy-v3.scm b/script-fu/3.0/przem-oldschool-photogrphy-v3.scm deleted file mode 100644 index 1f29d70..0000000 --- a/script-fu/3.0/przem-oldschool-photogrphy-v3.scm +++ /dev/null @@ -1,156 +0,0 @@ -; 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 drawable width height saturation lightness hc) - - (gimp-drawable-color-balance drawable TRANSFER-SHADOWS 1 - (shadows (rval hc)) - (shadows (gval hc)) - (shadows (bval hc))) - (gimp-drawable-color-balance drawable TRANSFER-MIDTONES 1 - (midtones (rval hc)) - (midtones (gval hc)) - (midtones (bval hc))) - (gimp-drawable-color-balance drawable TRANSFER-HIGHLIGHTS 1 - (highlights (rval hc)) - (highlights (gval hc)) - (highlights (bval hc))) - - (gimp-drawable-hue-saturation drawable 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) - - ; 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))) - ) - (gimp-image-undo-group-start image) - (gimp-context-push) - - (gimp-image-insert-layer image work-layer 0 -1) - - (if (= tint-use TRUE) - (apply-quick-tint image work-layer width height saturation lightness hc)) - (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) - - ;(gimp-drawable-curves-spline work-layer HISTOGRAM-VALUE 10 #(0 0 64 90 128 160 192 230 255 255)) - ;(gimp-drawable-curves-spline work-layer HISTOGRAM-RED 10 #(0 0 64 50 128 180 192 230 255 255)) - ;(gimp-drawable-curves-spline work-layer HISTOGRAM-GREEN 10 #(0 0 64 80 128 120 192 200 255 255)) - ;(gimp-drawable-curves-spline work-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 work-layer HISTOGRAM-VALUE 10 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) - - - (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 _"Kontrast" '(-30 -100 100 1 10 0 0) - SF-ADJUSTMENT _"Światła" '(-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) -) - -(script-fu-menu-register "przem-oldschool-photogrphy-v3" - "/Filters/PIETRASZCZYK/") diff --git "a/script-fu/3.0/przem-surreal-v3 \342\200\224 kopia.scm" "b/script-fu/3.0/przem-surreal-v3 \342\200\224 kopia.scm" new file mode 100644 index 0000000..1c9a809 --- /dev/null +++ "b/script-fu/3.0/przem-surreal-v3 \342\200\224 kopia.scm" @@ -0,0 +1,81 @@ +; przem-surreal-v3 - imitacja surrealistycznych obrazów +; author: PRP +; licencja: Public Domain +; Gdańsk - 22-6-2025 +; ver. 2.250712-0~beta +(define (przem-surreal-v3 img drawable) + (let* ( + ; Duplikujemy warstwę + (width (car (gimp-image-get-width img))) + (height (car (gimp-image-get-height img))) + (layer-copy 0) + (source-layer (vector-ref (car (gimp-image-get-layers img)) 0 )) + (green-layer (car (gimp-layer-new img "Green" width height RGB-IMAGE 100 LAYER-MODE-NORMAL))) + (gauss-layer (car (gimp-layer-new img "Gauss" width height RGB-IMAGE 100 LAYER-MODE-NORMAL))) + (type-layer (vector-ref drawable 0)) + (type (car (gimp-drawable-type type-layer))) + + ) + (gimp-context-push) + (gimp-image-undo-group-start img) + + + (set! layer-copy (car (gimp-layer-copy source-layer))) + + + ; Dodajemy skopiowaną warstwę + (gimp-image-insert-layer img layer-copy -1) + + + ;; jeśli obraz jest szary to konwertuje go na RGB - tak na sztukę + (if (> (car (gimp-drawable-type type-layer)) 1) + (gimp-image-convert-rgb img)) + + ; Konwersja obrazu do skali szarości + (if (= type RGB-IMAGE) + (gimp-drawable-desaturate type-layer DESATURATE-LIGHTNESS) + ) + + + + + ; Dodajemy lekki niebieski odcień + ;(gimp-colorize layer-copy 200 30 0) + (gimp-context-set-foreground '(200 30 0)) + + + (gimp-image-insert-layer img gauss-layer -1) + + ; Rozmycie dla efektu mgły + ;(plug-in-gauss RUN-NONINTERACTIVE img layer-copy 10.0 10.0 1) + (gimp-drawable-merge-new-filter gauss-layer "gegl:gaussian-blur" RUN-NONINTERACTIVE LAYER-MODE-REPLACE 1.0 "std-dev-x" 1.0 "std-dev-y" 1.0 "filter" "auto") + + ; Tryb mieszania: Overlay + (gimp-layer-set-mode layer-copy LAYER-MODE-MULTIPLY) + (gimp-layer-set-opacity layer-copy 70.0) + + ; Dodajemy zieloną warstwę + (gimp-image-insert-layer img green-layer -1) + (gimp-context-set-foreground '(60 120 60)) ; ciemna zieleń + (gimp-drawable-edit-fill green-layer FILL-FOREGROUND) + (gimp-layer-set-mode green-layer LAYER-MODE-MULTIPLY) + (gimp-layer-set-opacity green-layer 25.0) + + (gimp-image-undo-group-end img) + (gimp-displays-flush) + (gimp-context-pop) + ) +) + +(script-fu-register-filter "przem-surreal-v3" + "_Surreal Toning with Green" + "_Nadaje obrazowi chłodne barwy z zielonymi akcentami i efektem mgły" + "P.R.P" + "Public Domain" + "24-12-2025" + "RGB* GRAY*" + SF-ONE-OR-MORE-DRAWABLE +) + +(script-fu-menu-register "przem-surreal-v3" + "/Filters/PIETRASZCZYK/") diff --git a/script-fu/3.0/przem-surreal-v3.scm b/script-fu/3.0/przem-surreal-v3.scm new file mode 100644 index 0000000..0dd02fe --- /dev/null +++ b/script-fu/3.0/przem-surreal-v3.scm @@ -0,0 +1,72 @@ +; przem-surreal-v3 - imitacja surrealistycznych obrazów +; author: PRP +; licencja: Public Domain +; Gdańsk - 22-6-2025 +; ver. 2.250712-0~beta +(define (przem-surreal-v3 img drawable) + (let* ( + ; Duplikujemy warstwę + (width (car (gimp-image-get-width img))) + (height (car (gimp-image-get-height img))) + (layer-copy 0) + (source-layer (vector-ref (car (gimp-image-get-layers img)) 0 )) + (green-layer (car (gimp-layer-new img "Green" width height RGB-IMAGE 100 LAYER-MODE-NORMAL))) + (type-layer (vector-ref drawable 0)) + (type (car (gimp-drawable-type type-layer))) + + ) + (gimp-context-push) + (gimp-image-undo-group-start img) + + (set! layer-copy (car (gimp-layer-copy source-layer))) + + ; Dodajemy skopiowaną warstwę + (gimp-image-insert-layer img layer-copy -1) + + ;; jeśli obraz jest szary to konwertuje go na RGB - tak na sztukę + (if (> (car (gimp-drawable-type type-layer)) 1) + (gimp-image-convert-rgb img)) + + ; Konwersja obrazu do skali szarości + (if (= type RGB-IMAGE) + (gimp-drawable-desaturate type-layer DESATURATE-LIGHTNESS) + ) + + ; Dodajemy lekki niebieski odcień + ;(gimp-colorize layer-copy 200 30 0) + (gimp-context-set-foreground '(200 30 0)) + + ;(gimp-image-insert-layer img gauss-layer -1) + + ; Rozmycie dla efektu mgły + (gimp-drawable-merge-new-filter layer-copy "gegl:gaussian-blur" RUN-NONINTERACTIVE LAYER-MODE-REPLACE 1.0 "std-dev-x" 10.0 "std-dev-y" 10.0 "filter" "auto") + + ; Tryb mieszania: Overlay + (gimp-layer-set-mode layer-copy LAYER-MODE-ADDITION) + (gimp-layer-set-opacity layer-copy 70.0) + + ; Dodajemy zieloną warstwę + (gimp-image-insert-layer img green-layer -1) + (gimp-context-set-foreground '(60 120 60)) ; ciemna zieleń + (gimp-drawable-edit-fill green-layer FILL-FOREGROUND) + (gimp-layer-set-mode green-layer LAYER-MODE-MULTIPLY) + (gimp-layer-set-opacity green-layer 25.0) + + (gimp-image-undo-group-end img) + (gimp-displays-flush) + (gimp-context-pop) + ) +) + +(script-fu-register-filter "przem-surreal-v3" + "_Surreal Toning with Green" + "_Nadaje obrazowi chłodne barwy z zielonymi akcentami i efektem mgły" + "P.R.P" + "Public Domain" + "24-12-2025" + "RGB* GRAY*" + SF-ONE-OR-MORE-DRAWABLE +) + +(script-fu-menu-register "przem-surreal-v3" + "/Filters/PIETRASZCZYK/") diff --git a/script-fu/changelog.md b/script-fu/changelog.md index 4806c63..5785423 100644 --- a/script-fu/changelog.md +++ b/script-fu/changelog.md @@ -1,8 +1,11 @@ +# [2.251224-0] przem-surreal-v3.scm +* Implementacja script-fu imitującego surrealistyczne obrazy + # [2.251104-1] przem-true-cyjanotype-v3.scm * Implementacja krzywych tonalnych w wersji v3 # [2.251014-1] przem-true-cyjanotype-v3.scm -* Wstępna wersjia, namiastka z wersji 2.10 +* Wstępna wersja, namiastka z wersji 2.10 # [2.251014-0] przem-true-cyjanotype-v3.scm * Pierwsze koty za płoty z portem kolejnego filtra -- cgit v1.2.3