diff options
| author | Przemysław R. Pietraszczyk <przem@prymula.ct8.pl> | 2026-11-01 23:10:09 +0100 |
|---|---|---|
| committer | Przemysław R. Pietraszczyk <przem@prymula.ct8.pl> | 2026-11-01 23:10:09 +0100 |
| commit | e2879dfb8e9490595cc6db50c912368a8951b623 (patch) | |
| tree | 341e6e2cebb2bcd7638628083118a77c9877e835 /script-fu | |
| parent | 37c3febd1ee72e19af573dd2808a70e23995282f (diff) | |
2.261101-2:przem-retro-portrait-v3x.scm
Diffstat (limited to 'script-fu')
| -rw-r--r-- | script-fu/3.x/przem-retro-portrait-v3x.scm | 137 | ||||
| -rw-r--r-- | script-fu/3.x/przem-warm-grayscale-v3x.scm | 2 | ||||
| -rw-r--r-- | script-fu/SNAPSHOTS/przem-retro-portrait-v3.scm | 83 | ||||
| -rw-r--r-- | script-fu/changelog.md | 3 |
4 files changed, 141 insertions, 84 deletions
diff --git a/script-fu/3.x/przem-retro-portrait-v3x.scm b/script-fu/3.x/przem-retro-portrait-v3x.scm new file mode 100644 index 0000000..51467dc --- /dev/null +++ b/script-fu/3.x/przem-retro-portrait-v3x.scm @@ -0,0 +1,137 @@ +; przem-retro-portrait-v3x - Stare fotografie +; author: PRP +; licencja: Public Domain +; Gdańsk - 01-11-2026 +; ver. 2.261101-2 + +(define (midtones val) + (/ val 2.55)) + +(define (rval col) + (car col)) + +(define (gval col) + (cadr col)) + +(define (bval col) + (caddr col)) + +(define (color-balance layer) + (let* ( + (c1 '(10 0 -10)) + ) + (gimp-drawable-color-balance layer TRANSFER-MIDTONES 1 + (midtones (rval c1)) + (midtones (gval c1)) + (midtones (bval c1))))) + + +(define ( przem-retro-portrait-v3x image drawable brightness saturation palette black hue) + + (let* ( + (layer (vector-ref drawable 0)) + (type (car (gimp-drawable-type-with-alpha layer))) + (mask (car (gimp-channel-new image "Engraving Mask" (car (gimp-image-get-width image)) (car (gimp-image-get-height image)) black '(0.4 0.4 0.2 0.0 0.0 0.0 0.0 0.0 0.0)))) + (gradient-layer 0) + (layer (vector-ref drawable 0)) + (type (car (gimp-drawable-type-with-alpha layer))) + (blur-layer 0) + (color-layer 0) + ) + (gimp-context-push) + (gimp-image-undo-group-start image) + ;; Desaturacja + (if (= type RGBA-IMAGE) + (gimp-drawable-desaturate layer DESATURATE-LIGHTNESS)) + + (gimp-layer-set-mode layer 0) ; NORMAL mode + + ;; jeśli obraz jest szary to konwertuje go na RGB - tak na sztukę + (if (> (car (gimp-drawable-type layer)) 1) + (gimp-image-convert-rgb image)) + + ;; Dodaj ciepłe kolory przez saturację i odcień + (gimp-drawable-brightness-contrast layer (/ brightness 100) 0) + ; Odcień 30 = ciepłe kolory + (gimp-drawable-hue-saturation layer HUE-RANGE-ALL 0 0 (/ saturation 100) 30) + + ; dla obrazów przestrzeni RGB i Gray, utworzenie nowej warstwy, dopiero po kowersji na rgb + (set! gradient-layer (car (gimp-layer-new image "Gradient" (car (gimp-image-get-width image)) (car (gimp-image-get-height image)) RGBA-IMAGE 100 LAYER-MODE-NORMAL))) + + (let* ( + + (color-response (gimp-palette-get-entry-color palette 0)) + (color (car color-response)) + ) + (gimp-context-set-foreground color) + ) + (gimp-image-insert-channel image mask -1 0) + (gimp-image-insert-layer image gradient-layer 0 -1) + (gimp-drawable-edit-gradient-fill gradient-layer + GRADIENT-LINEAR 0 + FALSE 1 0 + TRUE + 0 0 0 0) + (gimp-layer-set-opacity gradient-layer 5) + + ;; profil koloru sRGB - sgray.icc + ;(gimp-image-set-color-profile-from-file image "/usr/share/ghostscript/10.08.0/iccprofiles/srgb.icc") + ; przywrócenie domyslnego + ;(gimp-image-set-color-profile image 0) + + + ; Argumenty funkcji gimp-image-convert-indexed: + ; 1. Obraz (img) + ; 2. Typ ditheringu kolorów: 0 = Brak, 1 = Floyd-Steinberg (zwykły), 2 = Floyd-Steinberg (zredukowany blef), 3 = Pozycja + ; 3. Typ palety: 0 = Wygeneruj optymalną paletę, 1 = Użyj palety WWW, 2 = Użyj niestandardowej palety, 3 = Użyj palety czarno-białej + ; 4. Liczba kolorów: 16 + ; 5. Dithering alfy (przezroczystości): TRUE lub FALSE + ; 6. Usuwanie nieużywanych kolorów z finalnej palety: TRUE lub FALSE + ; 7. Nazwa niestandardowej palety (używane tylko gdy typ palety to 2, w innych przypadkach dowolny string np. "") + + (gimp-image-convert-indexed image 1 0 hue FALSE FALSE "") + (gimp-image-convert-rgb image) + + (gimp-layer-set-mode layer 0) ; NORMAL mode + (set! blur-layer (car (gimp-layer-copy layer TRUE))) + (set! color-layer (car (gimp-layer-copy layer TRUE))) + + (gimp-image-insert-layer image blur-layer 0 -1) + (gimp-image-insert-layer image color-layer 0 -1) + + (gimp-drawable-merge-new-filter blur-layer "gegl:gaussian-blur" RUN-NONINTERACTIVE LAYER-MODE-REPLACE 0.45 "std-dev-x" 10.0 "std-dev-y" 10.0 "filter" "auto") + (gimp-layer-set-mode blur-layer LAYER-MODE-NORMAL) ; NORMAL mode + (gimp-image-merge-down image blur-layer EXPAND-AS-NECESSARY) + + ;# W GIMP 3.0 używamy operacji GEGL przez PDB dla uzyskania ziarna + (gimp-drawable-merge-new-filter layer "gegl:noise-rgb" RUN-NONINTERACTIVE LAYER-MODE-REPLACE 0.85 "red" 0.05 "green" 0.05 "blue" 0.05 "alpha" 0.0 "seed" 0) + + ;# Delikatne przesunięcie kolorów w stronę żółci/czerwieni w cieniach i półtonach + (color-balance color-layer) + (gimp-layer-set-mode color-layer LAYER-MODE-NORMAL) ; NORMAL mode + (gimp-layer-set-opacity color-layer 80) + + (gimp-image-undo-group-end image) + + (gimp-displays-flush) + (gimp-context-pop) + )) + +(script-fu-register-filter + "przem-retro-portrait-v3x" + _"The Atmosphere of Analog Portrait" + _"Stworzenie klimatu czarno-białego portretu analogowego z ziarnem i miękkim światłem" + "P.R.P" + "MIT" + "01-11-2026" + "RGB* GRAY*" + SF-ONE-OR-MORE-DRAWABLE + SF-ADJUSTMENT "Brightness" '(0 -100 100 1 10 0 0) + SF-ADJUSTMENT "Saturation" '(0 -100 100 1 10 0 0) + SF-PALETTE _"Palette" "Default" + SF-ADJUSTMENT "Black" '(5 0 100 1 10 0 0) + SF-ADJUSTMENT "Hue" '(2 2 16 1 10 0 0) + +) +(script-fu-menu-register "przem-retro-portrait-v3x" +"<Image>/Filters/PIETRASZCZYK/") diff --git a/script-fu/3.x/przem-warm-grayscale-v3x.scm b/script-fu/3.x/przem-warm-grayscale-v3x.scm index 9821325..aff9502 100644 --- a/script-fu/3.x/przem-warm-grayscale-v3x.scm +++ b/script-fu/3.x/przem-warm-grayscale-v3x.scm @@ -30,7 +30,7 @@ (gimp-drawable-hue-saturation layer HUE-RANGE-ALL 0 0 (/ saturation 100) 30) ; dla obrazów przestrzeni RGB i Gray, utworzenie nowej warstwy, dopiero po kowersji na rgb - (set! gradient-layer (car (gimp-layer-new image "Prussian Blue" (car (gimp-image-get-width image)) (car (gimp-image-get-height image)) RGBA-IMAGE 100 LAYER-MODE-NORMAL))) + (set! gradient-layer (car (gimp-layer-new image "Gradient" (car (gimp-image-get-width image)) (car (gimp-image-get-height image)) RGBA-IMAGE 100 LAYER-MODE-NORMAL))) (let* ( diff --git a/script-fu/SNAPSHOTS/przem-retro-portrait-v3.scm b/script-fu/SNAPSHOTS/przem-retro-portrait-v3.scm deleted file mode 100644 index 08f1ce7..0000000 --- a/script-fu/SNAPSHOTS/przem-retro-portrait-v3.scm +++ /dev/null @@ -1,83 +0,0 @@ -; przem-retro-portrait-v3x - Luźne nawiązanie do starej fotografii -; Przmeysław R. Pietraszczyk -; 2026-11-01 -; ver 2.261101-1 -; editor: Kate -; license: Public domain -; Ten script-fu wykorzystuje funkcje ze skryptu 'chrome-it.scm' -; Autorstwa Spencer Kimball - -(define (midtones val) - (/ val 2.55)) - -(define (rval col) - (car col)) - -(define (gval col) - (cadr col)) - -(define (bval col) - (caddr col)) - -(define (color-balance layer) - (let* ( - (c1 '(10 0 -10)) - ) - (gimp-drawable-color-balance layer TRANSFER-MIDTONES 1 - (midtones (rval c1)) - (midtones (gval c1)) - (midtones (bval c1))))) - -(define (przem-retro-portrait-v3x image drawable) - - (let* ( - (layer (vector-ref drawable 0)) - (type (car (gimp-drawable-type-with-alpha layer))) - (blur-layer 0) - (color-layer 0) - ) - - (gimp-context-push) - (gimp-image-undo-group-start image) - ;; Desaturacja - ;(if (= type RGBA-IMAGE) - ; (gimp-drawable-desaturate layer DESATURATE-LIGHTNESS)) - - (gimp-layer-set-mode layer 0) ; NORMAL mode - (set! blur-layer (car (gimp-layer-copy layer TRUE))) - (set! color-layer (car (gimp-layer-copy layer TRUE))) - - ;; jeśli obraz jest szary to konwertuje go na RGB - tak na sztukę - ;(if (> (car (gimp-drawable-type layer)) 1) - ; (gimp-image-convert-rgb image)) - - (gimp-image-insert-layer image blur-layer 0 -1) - (gimp-image-insert-layer image color-layer 0 -1) - - (gimp-drawable-merge-new-filter blur-layer "gegl:gaussian-blur" RUN-NONINTERACTIVE LAYER-MODE-REPLACE 0.45 "std-dev-x" 10.0 "std-dev-y" 10.0 "filter" "auto") - (gimp-layer-set-mode blur-layer LAYER-MODE-NORMAL) ; NORMAL mode - (gimp-image-merge-down image blur-layer EXPAND-AS-NECESSARY) - - ;# W GIMP 3.0 używamy operacji GEGL przez PDB dla uzyskania ziarna - (gimp-drawable-merge-new-filter layer "gegl:noise-rgb" RUN-NONINTERACTIVE LAYER-MODE-REPLACE 0.85 "red" 0.05 "green" 0.05 "blue" 0.05 "alpha" 0.0 "seed" 0) - - ;# Delikatne przesunięcie kolorów w stronę żółci/czerwieni w cieniach i półtonach - (color-balance color-layer) - (gimp-layer-set-mode color-layer LAYER-MODE-NORMAL) ; NORMAL mode - (gimp-layer-set-opacity color-layer 80) - - (gimp-image-undo-group-end image) - (gimp-displays-flush) - (gimp-context-pop) - )) -(script-fu-register-filter "przem-retro-portrait-v3x" - _"The Atmosphere of Analog Portrait" - _"Stworzenie klimatu czarno-białego portretu analogowego z ziarnem i miękkim światłem" - "P.R.P." - "Public Domain" - "2026-11-01" - "RGB*" - SF-ONE-OR-MORE-DRAWABLE -) - -(script-fu-menu-register "przem-retro-portrait-v3x" "<Image>/Filters/PIETRASZCZYK/") diff --git a/script-fu/changelog.md b/script-fu/changelog.md index ff6e53e..9469a89 100644 --- a/script-fu/changelog.md +++ b/script-fu/changelog.md @@ -1,3 +1,6 @@ +# [2.261101-2] przem-retro-portrait-v3x.scm +* Przebudowa filtra - na podstawie przem-warm-grayscale.scm + # [2.261101-1] przem-retro-portrait-v3.scm * Nowy filtr nawiązujący do starej fotografii - SNAPSHOT |
