summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPrzemysław <przem@prymula.ct8.pl>2026-05-05 19:47:43 +0200
committerPrzemysław <przem@prymula.ct8.pl>2026-05-05 19:47:43 +0200
commitccb5b1dc26e3a83b1e4af08508dfde9a6706f31e (patch)
tree6b6c3a1928816edf4eb6b28a619694fda5c53a86
parenteabf5ebdf95c0f7c664610fc59e1c44542616f96 (diff)
2.260505-0.1
-rw-r--r--script-fu/3.0/przem-hitchcock-d400-film-effect.scm236
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/")