diff options
| author | Przemysław <przem@prymula.ct8.pl> | 2026-05-05 19:47:43 +0200 |
|---|---|---|
| committer | Przemysław <przem@prymula.ct8.pl> | 2026-05-05 19:47:43 +0200 |
| commit | ccb5b1dc26e3a83b1e4af08508dfde9a6706f31e (patch) | |
| tree | 6b6c3a1928816edf4eb6b28a619694fda5c53a86 | |
| parent | eabf5ebdf95c0f7c664610fc59e1c44542616f96 (diff) | |
2.260505-0.1
| -rw-r--r-- | script-fu/3.0/przem-hitchcock-d400-film-effect.scm | 236 |
1 files changed, 0 insertions, 236 deletions
diff --git a/script-fu/3.0/przem-hitchcock-d400-film-effect.scm b/script-fu/3.0/przem-hitchcock-d400-film-effect.scm deleted file mode 100644 index c14c36c..0000000 --- a/script-fu/3.0/przem-hitchcock-d400-film-effect.scm +++ /dev/null @@ -1,236 +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 image drawable) - (let* ( - (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 width height RGBA-IMAGE "Color Grade D400" 100 NORMAL-MODE))) - ; (gimp-image-insert-layer image color-grade-layer 0 -1) - ; (gimp-drawable-fill color-grade-layer TRANSPARENT-FILL) - - ;; Cienie – lekko zielonkawe (charakterystyczne dla D400) - ; (gimp-context-set-foreground '(40 70 50)) - ; (gimp-edit-fill color-grade-layer FOREGROUND-FILL) - ; (gimp-layer-set-mode color-grade-layer COLOR-MODE) - ; (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) - ) -) - -;; ============================================================= -;; REJESTRACJA SKRYPTU W MENU GIMP -;; ============================================================= - -(script-fu-register-filter "przem-hitchcock-d400-film-effect" - "_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" - "<Image>/Filters/PIETRASZCZYK/") |
