summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--script-fu/3.x/przem-retro-portrait-v3x.scm137
-rw-r--r--script-fu/3.x/przem-warm-grayscale-v3x.scm2
-rw-r--r--script-fu/SNAPSHOTS/przem-retro-portrait-v3.scm83
-rw-r--r--script-fu/changelog.md3
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