diff options
Diffstat (limited to 'script-fu')
| -rw-r--r-- | script-fu/3.0/przem-hitchcock-d400-film-effect-v3.scm | 249 | ||||
| -rw-r--r-- | script-fu/3.0/przem-hitchock-d400-film-effect-v3.scm | 72 | ||||
| -rw-r--r-- | script-fu/changelog.md | 3 |
3 files changed, 75 insertions, 249 deletions
diff --git a/script-fu/3.0/przem-hitchcock-d400-film-effect-v3.scm b/script-fu/3.0/przem-hitchcock-d400-film-effect-v3.scm deleted file mode 100644 index aac6d35..0000000 --- a/script-fu/3.0/przem-hitchcock-d400-film-effect-v3.scm +++ /dev/null @@ -1,249 +0,0 @@ -; Hitchcock D400 Film Effect – imitacja chińskiego filmu Hitchock D400 -; author: PRP -; licencja: Public Domain -; Gdańsk - 24-04-2026 -; ver. 2.260424-0 - - -(define (add-hsv-noise img drawable intensity-h intensity-s intensity-v grain) - (let* ( - (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))) - ) - - ; Konwertuj do HSV jeśli to konieczne - ;(if (not (= (car (gimp-drawable-is-rgb drawable)) 1)) - ; (gimp-image-convert-rgb img)) - (gimp-context-set-foreground '(128 128 128)) - (gimp-context-set-background '(0 0 0)) - (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 drawable))) - (noise-height (caddr (cddr (gimp-drawable-mask-intersect drawable))))) - - (gimp-drawable-merge-new-filter noise-layer "gegl:noise-solid" 0 LAYER-MODE-REPLACE 1.0 "tileable" FALSE "turbulent" FALSE "seed" 0 - "detail" grain "x-size" grain "y-size" grain - "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)) - ; czy to potrzebne ? - (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 70) - - ; 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-merge-down img noise-layer EXPAND-AS-NECESSARY) - - - - ) - ;(gimp-image-remove-layer img noise-layer) - ) -) - - - - - -(define (przem-hitchcock-d400-film-effect-v3 image drawable) - (let* ( - (layer (vector-ref drawable 0)) - (film-grain-layer (vector-ref drawable 0)) - (width (car (gimp-image-get-width image))) - (height (car (gimp-image-get-height image))) - (vignette-layer) - (color-grade-layer) - (original-drawable drawable) - ) - ;; Start undo group - (gimp-image-undo-group-start image) - - ;; --------------------------------------------------------- - ;; 1. WARSTWA ZIARNA KLISZY (Film Grain) - ;; --------------------------------------------------------- - ;(set! film-grain-layer (car (gimp-layer-new image "Film Grain" width height RGB-IMAGE 50 LAYER-MODE-NORMAL))) - ;(gimp-image-insert-layer image film-grain-layer 0 -1) - ;(gimp-context-set-foreground '(128 128 128)) - ;(gimp-context-set-background '(0 0 0)) - ;(gimp-drawable-fill film-grain-layer FILL-BACKGROUND) - ;(plug-in-hsv-noise RUN-NONINTERACTIVE image film-grain-layer 0 0 0 45) - (add-hsv-noise image film-grain-layer 35 40 50 0.45) - - ; (plug-in-gauss-iir RUN-NONINTERACTIVE image film-grain-layer 0.8 1 1) - (gimp-drawable-merge-new-filter film-grain-layer "gegl:gaussian-blur" 0 LAYER-MODE-REPLACE 0.8 "std-dev-x" 1 "std-dev-y" 1 "filter" "iir") - - (gimp-layer-set-mode film-grain-layer LAYER-MODE-MULTIPLY) - - ;; --------------------------------------------------------- - ;; 2. WARSTWA WINIETOWANIA (Vignette) - ;; --------------------------------------------------------- - ;(set! vignette-layer (car (gimp-layer-new image width height RGBA-IMAGE "Vignette" 100 NORMAL-MODE))) - ;(gimp-image-insert-layer image vignette-layer 0 -1) - ;(gimp-drawable-fill vignette-layer TRANSPARENT-FILL) - ;(let* ( - ; (selection (car (gimp-selection-ellipse image (/ width 4) (/ height 4) (/ width 2) (/ height 2) 0 0 0))) - ; (sel-bounds) - ; ) - ; (gimp-selection-invert image) - ; (gimp-context-set-foreground '(0 0 0)) - ; (gimp-edit-fill vignette-layer FOREGROUND-FILL) - ; (gimp-selection-none image) - ; (plug-in-gauss-iir RUN-NONINTERACTIVE image vignette-layer 40 1 1) - ; ) - ; (gimp-layer-set-mode vignette-layer MULTIPLY-MODE) - ; (gimp-layer-set-opacity vignette-layer 60) - - ;; --------------------------------------------------------- - ;; 3. WARSTWA KORYGUJĄCA KOLORY (Color Grading D400) - ;; --------------------------------------------------------- - (set! color-grade-layer (car (gimp-layer-new image "Color Grade D400" width height RGBA-IMAGE 100 LAYER-MODE-NORMAL))) - (gimp-image-insert-layer image color-grade-layer 0 2) - (gimp-drawable-edit-clear color-grade-layer) - - ;(gimp-drawable-fill color-grade-layer FILL-FOREGROUND) - (gimp-drawable-fill color-grade-layer FILL-BACKGROUND) - - ;; Cienie – lekko zielonkawe (charakterystyczne dla D400) - (gimp-context-set-foreground '(40 70 50)) - - (gimp-edit-copy (vector layer)) - - (let* ( - (pasted (car (gimp-edit-paste color-grade-layer FALSE))) - (num-pasted (vector-length pasted)) - (floating-sel (vector-ref pasted (- num-pasted 1))) - ) - (gimp-floating-sel-anchor floating-sel) - ) - (gimp-image-set-selected-layers image (vector color-grade-layer)) - (set! color-grade-layer layer) - - ; (gimp-layer-set-mode color-grade-layer COLOR-MODE) - (gimp-layer-set-mode color-grade-layer LAYER-MODE-MULTIPLY) - (gimp-layer-set-opacity color-grade-layer 35) - - ;; Światła – ciepłe, kremowe - ; (let* ((warm-lights (car (gimp-layer-new image width height RGBA-IMAGE "Warm Lights" 100 NORMAL-MODE)))) - ; (gimp-image-insert-layer image warm-lights 0 -1) - ; (gimp-drawable-fill warm-lights TRANSPARENT-FILL) - ; (gimp-context-set-foreground '(255 240 220)) - ; (gimp-edit-fill warm-lights FOREGROUND-FILL) - ; (gimp-layer-set-mode warm-lights SOFTLIGHT-MODE) - ; (gimp-layer-set-opacity warm-lights 25) - ;) - - ;; --------------------------------------------------------- - ;; 4. REDUKCJA SATURACJI (Desaturation) - ;; --------------------------------------------------------- - ; (plug-in-colors-hue-sat RUN-NONINTERACTIVE image drawable 0 0 -20 0) - - ;; --------------------------------------------------------- - ;; 5. DELIKATNY SOFT-FOCUS (Symulacja starego obiektywu) - ;; --------------------------------------------------------- - ; (let* ((soft-copy (car (gimp-layer-copy drawable TRUE)))) - ; (gimp-image-insert-layer image soft-copy 0 -1) - ; (plug-in-gauss-iir RUN-NONINTERACTIVE image soft-copy 1.2 1 1) - ; (gimp-layer-set-mode soft-copy SCREEN-MODE) - ; (gimp-layer-set-opacity soft-copy 15) - ; ) - - ;; --------------------------------------------------------- - ;; 6. LEKKA WINIETA KOLOROWA (Chromatic Vignette) - ;; --------------------------------------------------------- - ;(let* ((chrom-vignette (car (gimp-layer-new image width height RGBA-IMAGE "Chromatic Vignette" 100 NORMAL-MODE)))) - ; (gimp-image-insert-layer image chrom-vignette 0 -1) - ; (gimp-drawable-fill chrom-vignette TRANSPARENT-FILL) - ; (gimp-context-set-foreground '(0 0 0)) - ; (gimp-edit-fill chrom-vignette FOREGROUND-FILL) - ; (gimp-layer-set-mask chrom-vignette (car (gimp-layer-create-mask chrom-vignette ADD-WHITE-TO-SELECTION))) - ; (gimp-layer-set-mode chrom-vignette MULTIPLY-MODE) - ; (gimp-layer-set-opacity chrom-vignette 20) - ; ) - - ;; --------------------------------------------------------- - ;; 7. DODATKOWE ZIARNO W CIENIACH (Shadow Grain Boost) - ;; --------------------------------------------------------- - ; (let* ((shadow-grain (car (gimp-layer-new image width height RGBA-IMAGE "Shadow Grain" 100 NORMAL-MODE)))) - ; (gimp-image-insert-layer image shadow-grain 0 -1) - ; (gimp-drawable-fill shadow-grain TRANSPARENT-FILL) - ; (gimp-context-set-foreground '(30 30 30)) - ; (gimp-edit-fill shadow-grain FOREGROUND-FILL) - ; (plug-in-hsv-noise RUN-NONINTERACTIVE image shadow-grain 0 0 0 60) - ; (gimp-layer-set-mode shadow-grain MULTIPLY-MODE) - ; (gimp-layer-set-opacity shadow-grain 25) - ; ) - - ;; Flatten image (opcjonalnie – można zostawić warstwy) - ;; (gimp-image-flatten image) - - ;; End undo group - (gimp-image-undo-group-end image) - (gimp-displays-flush) - ) -) - -(script-fu-register-filter "przem-hitchcock-d400-film-effect-v3" - "_Hitchcock D400 Film Effect..." - "Konwertuje kolorowe zdjęcie na efekt analogowej kliszy HITCHCOCK D400.\n\ -Efekt obejmuje: ziarno filmu, winietowanie, korekcję kolorów (zielone cienie,\n\ -ciepłe światła), redukcję saturacji, soft-focus oraz chromatic vignette." - "AI Assistant" - "PRP" - "2026" - "RGB*, GRAY*" - SF-ONE-OR-MORE-DRAWABLE -) - -(script-fu-menu-register "przem-hitchcock-d400-film-effect-v3" - "<Image>/Filters/PIETRASZCZYK/") diff --git a/script-fu/3.0/przem-hitchock-d400-film-effect-v3.scm b/script-fu/3.0/przem-hitchock-d400-film-effect-v3.scm new file mode 100644 index 0000000..9f658dc --- /dev/null +++ b/script-fu/3.0/przem-hitchock-d400-film-effect-v3.scm @@ -0,0 +1,72 @@ +; przem-hitchock-d400-film-effect-v3 - Imitacja filmu chińskiego HITCHOCK D400: kontrast, ciepłe światła, chłodne cienie, bloom +; author: PRP +; licencja: Public Domain +; Gdańsk - 14-06-2026 +; ver. 2.260614-0 + +(define (przem-hitchock-d400-film-effect-v3 image drawable + contrast + lift-blacks + warm-highlights + cool-shadows + bloom-strength) + (gimp-context-push) + (gimp-image-undo-group-start image) + + ;; Duplikat warstwy bazowej + (let* ( + (type-layer (vector-ref drawable 0)) + (layer (vector-ref drawable 0)) + (work-layer (car (gimp-layer-copy layer TRUE))) + (bloom-layer 0) + ) + + (if (> (car (gimp-drawable-type type-layer)) 1) + (gimp-image-convert-rgb image) + ) + + (gimp-image-insert-layer image work-layer 0 -1) + + + (let* ((finish-layer (car (gimp-layer-copy layer TRUE))) + (gimp-drawable-curves-spline finish-layer HISTOGRAM-VALUE 10 #( 0 lift-blacks 64 (+ 48 contrast) 128 128 192 (- 208 contrast) 255 255)) + (gimp-layer-set-opacity finish-layer 40) + + )) + + ;; 2. Ciepłe światła – Color Balance (midtones + highlights) + ; cyan-red - magenta-green - yellow-blue (ujemne = więcej żółtego, dodatnie = więcej niebieskiego) + (gimp-drawable-color-balance work-layer TRANSFER-SHADOWS FALSE 0 0 cool-shadows) + (gimp-drawable-color-balance work-layer TRANSFER-MIDTONES FALSE warm-highlights 0 (- warm-highlights)) + (gimp-drawable-color-balance work-layer TRANSFER-HIGHLIGHTS FALSE warm-highlights 0 (- warm-highlights)) + + ;; 3. Delikatny bloom / glow (kopiujemy warstwę, rozmywamy, Soft light) + (set! bloom-layer (car (gimp-layer-copy layer TRUE))) + (gimp-image-insert-layer image bloom-layer 0 -1) + (gimp-layer-set-mode bloom-layer LAYER-MODE-SUBTRACT) + (gimp-drawable-merge-new-filter bloom-layer "gegl:gaussian-blur" 1 LAYER-MODE-REPLACE 1.0 "std-dev-x" 8.0 "std-dev-y" 8.0 "filter" "iir") + (gimp-layer-set-opacity bloom-layer bloom-strength) + + (gimp-image-undo-group-end image) + (gimp-displays-flush) + (gimp-context-pop) + ) +) + +(script-fu-register-filter "przem-hitchock-d400-film-effect-v3" + _"Hitchock d400 effect" + _"Imitacja filmu chińskiego HITCHOCK D400: kontrast, ciepłe światła, chłodne cienie, bloom." + _"P.R.P" + "Public Domain" + "2026-06-14" + "*" + SF-ONE-OR-MORE-DRAWABLE + SF-ADJUSTMENT "Kontrast (0–80)" '(40 0 80 1 5 0 1) + SF-ADJUSTMENT "Black up (0–40)" '(12 0 40 1 5 0 1) + SF-ADJUSTMENT "Warm lights(–50 do 50)" '(15 -50 50 1 5 0 1) + SF-ADJUSTMENT "Cool cienie (–50 do 50)" '(-10 -50 50 1 5 0 1) + SF-ADJUSTMENT "Bloom – siła (0–100)" '(35 0 100 1 5 0 1) +) + +(script-fu-menu-register "przem-hitchock-d400-film-effect-v3" + "<Image>/Filters/PIETRASZCZYK/") diff --git a/script-fu/changelog.md b/script-fu/changelog.md index 71376b4..6974dd7 100644 --- a/script-fu/changelog.md +++ b/script-fu/changelog.md @@ -1,3 +1,6 @@ +# [2.260614-0] przem-hitchock-d400-film-effect-v3.scm +* Reorganizacja kodu oraz finisz nowego filtra + # [2.260505-0] przem-surreal-v32.scm && przem-lith-effect-v32.scm * Uzdatnienie w pelni filtra 'surreal' * filtr 'lith' przeksztalca obraz na odcienie szarości zamiast sepii |
