diff options
-rw-r--r-- | script-fu/2.10/przem-wet-collodion.scm | 75 | ||||
-rw-r--r-- | script-fu/changelog.md | 3 |
2 files changed, 75 insertions, 3 deletions
diff --git a/script-fu/2.10/przem-wet-collodion.scm b/script-fu/2.10/przem-wet-collodion.scm index 13bcd7d..9174cb5 100644 --- a/script-fu/2.10/przem-wet-collodion.scm +++ b/script-fu/2.10/przem-wet-collodion.scm @@ -1,4 +1,67 @@ -(define (przem-wet-collodion image drawable)
+; przem-wet-collodion - imituje efekt mokrego kolodionu
+; author: PRP
+; licencja: Public Domain
+; Gdańsk - 15-07-2025
+; ver. 2.250718-0~beta
+
+(define (add-hsv-noise img drawable intensity-h intensity-s intensity-v grain)
+ (let* (
+ (width (car (gimp-drawable-width drawable)))
+ (height (car (gimp-drawable-height drawable)))
+ (noise-layer (car (gimp-layer-new img width height RGB-IMAGE "Noise" 100 NORMAL-MODE)))
+ )
+
+ ; 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)
+
+ ; Ustaw odpowiednie intensywności dla każdego kanału HSV
+ (let* (
+ (h-channel (car (gimp-layer-new img width height RGB-IMAGE "H Channel" 100 LAYER-MODE-HSV-HUE)))
+ (s-channel (car (gimp-layer-new img width height RGB-IMAGE "S Channel" 100 LAYER-MODE-HSV-SATURATION)))
+ (v-channel (car (gimp-layer-new img width height RGB-IMAGE "V Channel" 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 noise-layer)
+ (gimp-floating-sel-anchor (car (gimp-edit-paste h-channel TRUE)))
+ (gimp-floating-sel-anchor (car (gimp-edit-paste s-channel TRUE)))
+ (gimp-floating-sel-anchor (car (gimp-edit-paste v-channel TRUE)))
+ (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 image drawable intensity-h intensity-s intensity-v grain blur)
(let* (
(width (car (gimp-image-width image)))
(height (car (gimp-image-height image)))
@@ -17,10 +80,11 @@ )
;; Dodanie szumu
- (plug-in-noisify RUN-NONINTERACTIVE image drawable FALSE 0.8 0.8 0.8 0)
+ (add-hsv-noise image drawable intensity-h intensity-s intensity-v grain)
+ (plug-in-noisify RUN-NONINTERACTIVE image drawable FALSE grain grain grain 0)
;; Dodanie lekkiego rozmycia
- (plug-in-gauss-iir2 RUN-NONINTERACTIVE image drawable 2 2)
+ (plug-in-gauss-iir2 RUN-NONINTERACTIVE image drawable blur blur)
(gimp-image-undo-group-end image)
(gimp-displays-flush)
@@ -36,6 +100,11 @@ "RGB*"
SF-IMAGE "Image" 0
SF-DRAWABLE "Drawable" 0
+ 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"
diff --git a/script-fu/changelog.md b/script-fu/changelog.md index d7f690c..2e79690 100644 --- a/script-fu/changelog.md +++ b/script-fu/changelog.md @@ -1,3 +1,6 @@ +# [2.250718-0] przem-wey-collodion +* Uspawnienia + # [2.250715-0] przem-wet-collodion * Mokry kolodion |