summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPrzemysław R. Pietraszczyk <przem@prymula.ct8.pl>2025-08-24 00:42:15 +0200
committerPrzemysław R. Pietraszczyk <przem@prymula.ct8.pl>2025-08-24 00:42:15 +0200
commitb6baa808dc8c15e24c605e3eeef356d53f4b7bd4 (patch)
tree79fbd894a35fc76ddb65eedf8a5f6ea6aff1f547
parentfaf5efeed94933b295ad41435f878bcd0b399204 (diff)
2.250824-0:przem-wet-collodion-v3.scm
-rw-r--r--script-fu/3.0/przem-apply-sepia-v3.scm2
-rw-r--r--script-fu/3.0/przem-wet-collodion-v3.scm149
-rw-r--r--script-fu/changelog.md3
3 files changed, 153 insertions, 1 deletions
diff --git a/script-fu/3.0/przem-apply-sepia-v3.scm b/script-fu/3.0/przem-apply-sepia-v3.scm
index e820200..aa495b7 100644
--- a/script-fu/3.0/przem-apply-sepia-v3.scm
+++ b/script-fu/3.0/przem-apply-sepia-v3.scm
@@ -132,7 +132,7 @@
(gimp-displays-flush)
) )
-(script-fu-register-filterscript-fu-register-filter "przem-apply-sepia-v3"
+(script-fu-register-filter "przem-apply-sepia-v3"
_"_Apply a sepia effect to the image"
_"Tworzy obraz sepii"
"Przemyslaw R. Pietraszczyk"
diff --git a/script-fu/3.0/przem-wet-collodion-v3.scm b/script-fu/3.0/przem-wet-collodion-v3.scm
new file mode 100644
index 0000000..88f1b18
--- /dev/null
+++ b/script-fu/3.0/przem-wet-collodion-v3.scm
@@ -0,0 +1,149 @@
+; przem-wet-collodion-v3 - imituje efekt mokrego kolodionu
+; author: PRP
+; licencja: Public Domain
+; Gdańsk - 24-08-2025
+; ver. 2.250824-0~beta
+
+(define (add-hsv-noise img drawable intensity-h intensity-s intensity-v grain)
+ (let* (
+ ;(width (car (gimp-image-get-width drawable)))
+ ;(height (car (gimp-image-get-height drawable)))
+ (width (car (gimp-image-get-width img)))
+ (height (car (gimp-image-get-height img)))
+ (noise-layer (car (gimp-layer-new img "Noise" width height RGB-IMAGE 100 LAYER-MODE-NORMAL)))
+ )
+
+ ; Rozpocznij edycję
+ ;(gimp-image-undo-group-start img)
+
+ ; Konwertuj do HSV jeśli to konieczne
+ ;(if (not (= (car (gimp-drawable-is-rgb drawable)) 1))
+ ; (gimp-image-convert-rgb img))
+
+ (gimp-image-insert-layer img noise-layer 0 -1)
+ (gimp-drawable-fill noise-layer FILL-TRANSPARENT)
+
+ ; Generuj szum
+ ;(plug-in-solid-noise RUN-NONINTERACTIVE img noise-layer 0 0 (random 1000) 0 4 4)
+ (let* ((noise-width (cadddr (gimp-drawable-mask-intersect noise-layer)))
+ (noise-height (caddr (cddr (gimp-drawable-mask-intersect noise-layer)))))
+
+ (gimp-drawable-merge-new-filter noise-layer "gegl:noise-solid" 0 LAYER-MODE-REPLACE 1.0 "tileable" FALSE "turbulent" FALSE "seed" 0
+ "detail" 1 "x-size" 4.0 "y-size" 4.0
+ "width" noise-width "height"noise-height))
+
+
+
+ ; Ustaw odpowiednie intensywności dla każdego kanału HSV
+ (let* (
+ (h-channel (car (gimp-layer-new img "H Channel" width height RGB-IMAGE 100 LAYER-MODE-HSV-HUE)))
+ (s-channel (car (gimp-layer-new img "S Channel" width height RGB-IMAGE 100 LAYER-MODE-HSV-SATURATION)))
+ (v-channel (car (gimp-layer-new img "V Channel" width height RGB-IMAGE 100 LAYER-MODE-HSV-VALUE))))
+
+ ; Dodaj kanały
+ (gimp-image-insert-layer img h-channel 0 -1)
+ (gimp-image-insert-layer img s-channel 0 -1)
+ (gimp-image-insert-layer img v-channel 0 -1)
+
+ ; Skopiuj szum do każdego kanału
+ (gimp-edit-copy (vector noise-layer))
+
+ (gimp-edit-copy (vector drawable))
+ (let* (
+ (pasted (car (gimp-edit-paste h-channel TRUE)))
+ (num-pasted (vector-length pasted))
+ (floating-sel (vector-ref pasted (- num-pasted 1)))
+ )
+ (gimp-layer-set-offsets floating-sel 0 0)
+ (gimp-floating-sel-anchor floating-sel))
+
+ (gimp-edit-copy (vector drawable))
+ (let* (
+ (pasted (car (gimp-edit-paste s-channel TRUE)))
+ (num-pasted (vector-length pasted))
+ (floating-sel (vector-ref pasted (- num-pasted 1)))
+ )
+ (gimp-layer-set-offsets floating-sel 0 0)
+ (gimp-floating-sel-anchor floating-sel))
+
+
+ (gimp-edit-copy (vector drawable))
+ (let* (
+ (pasted (car (gimp-edit-paste v-channel TRUE)))
+ (num-pasted (vector-length pasted))
+ (floating-sel (vector-ref pasted (- num-pasted 1)))
+ )
+ (gimp-layer-set-offsets floating-sel 0 0)
+ (gimp-floating-sel-anchor floating-sel))
+
+ (gimp-layer-set-opacity noise-layer 0)
+
+ ; Ustaw przezroczystość dla każdego kanału
+ (gimp-layer-set-opacity h-channel intensity-h)
+ (gimp-layer-set-opacity s-channel intensity-s)
+ (gimp-layer-set-opacity v-channel intensity-v)
+
+ ; Połącz kanały z oryginalnym obrazem
+ (gimp-image-merge-down img h-channel EXPAND-AS-NECESSARY)
+ (gimp-image-merge-down img s-channel EXPAND-AS-NECESSARY)
+ (gimp-image-merge-down img v-channel EXPAND-AS-NECESSARY)
+
+
+ )
+ ;(gimp-image-remove-layer img noise-layer)
+ )
+)
+
+
+
+
+(define (przem-wet-collodion-v3 image drawable intensity-h intensity-s intensity-v grain blur)
+ (let* (
+ (layer (vector-ref drawable 0))
+ (type (car (gimp-drawable-type-with-alpha layer)))
+ (width (car (gimp-image-get-width image)))
+ (height (car (gimp-image-get-height image)))
+ )
+ (gimp-image-undo-group-start image)
+
+ ;; Desaturacja
+ (if (= type RGBA-IMAGE)
+ (gimp-drawable-desaturate layer DESATURATE-LIGHTNESS))
+
+ ;; Dodanie winiety
+ (let* ((w-layer (car (gimp-layer-copy layer TRUE))))
+ (gimp-image-insert-layer image w-layer 0 -1)
+ (gimp-drawable-merge-new-filter w-layer "gegl:gaussian-blur" 0 LAYER-MODE-REPLACE 1.0 "std-dev-x" 200 "std-dev-y" 200 "filter" "auto")
+ (gimp-layer-set-mode w-layer LAYER-MODE-MULTIPLY)
+ (gimp-layer-set-opacity w-layer 60)
+ )
+
+ ;; Dodanie szumu
+ (add-hsv-noise image layer intensity-h intensity-s intensity-v grain)
+ ;;(plug-in-noisify RUN-NONINTERACTIVE image layer FALSE grain grain grain 0)
+
+ ;; Dodanie lekkiego rozmycia
+ (gimp-drawable-merge-new-filter layer "gegl:gaussian-blur" 0 LAYER-MODE-REPLACE 1.0 "std-dev-x" blur "std-dev-y" blur "filter" "auto")
+
+ (gimp-image-undo-group-end image)
+ (gimp-displays-flush)
+ )
+)
+
+(script-fu-register-filter "przem-wet-collodion-v3"
+ _"Wet Collodion"
+ _"Imituje efekt mokrego kolodionu"
+ "PRP"
+ "Public Domain"
+ "2025-07-15"
+ "RGB*"
+ SF-ONE-OR-MORE-DRAWABLE
+ SF-ADJUSTMENT "Hue Noise Intensity" '(30 0 100 1 10 0 0)
+ SF-ADJUSTMENT "Saturation Noise Intensity" '(20 0 100 1 10 0 0)
+ SF-ADJUSTMENT "Value Noise Intensity" '(15 0 100 1 10 0 0)
+ SF-ADJUSTMENT "Grain" '(0.2 0 1 0.1 0.1 2 0)
+ SF-ADJUSTMENT "Blur" '(2 0 100 1 10 0 0)
+)
+
+(script-fu-menu-register "przem-wet-collodion-v3"
+ "<Image>/Filters/PIETRASZCZYK/")
diff --git a/script-fu/changelog.md b/script-fu/changelog.md
index e3a36b6..9486683 100644
--- a/script-fu/changelog.md
+++ b/script-fu/changelog.md
@@ -1,3 +1,6 @@
+# [2.250824-0] przem-wet-collodion-v3
+* Mokry kolodion dla Gimpa 3.0
+
# [2.250802-0] przem-serigraphy
* Dodanie nowego filtra przem-serigraphy dla 2.10