From 953f5dfc0d810411aed4714e7f6c7386c7c60aa7 Mon Sep 17 00:00:00 2001 From: przem Date: Tue, 14 Oct 2025 21:10:45 +0200 Subject: 2.251014-1:przem-true-cyjanotype-v3.scm --- script-fu/3.0/przem-prussian-blue-effect-v3.scm | 7 +- script-fu/3.0/przem-true-cyjanotype-v3.scm | 93 +++++++++++++++++++++++++ script-fu/changelog.md | 6 ++ 3 files changed, 103 insertions(+), 3 deletions(-) create mode 100644 script-fu/3.0/przem-true-cyjanotype-v3.scm diff --git a/script-fu/3.0/przem-prussian-blue-effect-v3.scm b/script-fu/3.0/przem-prussian-blue-effect-v3.scm index c61a422..50c81e4 100644 --- a/script-fu/3.0/przem-prussian-blue-effect-v3.scm +++ b/script-fu/3.0/przem-prussian-blue-effect-v3.scm @@ -4,7 +4,7 @@ ; Gdańsk - 22-6-2025 ; ver. 2.250712-0~beta -(define (przem-prussian-blue-effect-v3 img drawable mode black value-blue brightness contrast) +(define (przem-prussian-blue-effect-v3 img drawable mode black value-blue brightness contrast invert) ;(script-fu-use-v3) @@ -59,8 +59,9 @@ FALSE 1 0 TRUE 0 0 0 0))) + ;(if (= invert TRUE) (gimp-invert gradient-layer)) - + (gimp-layer-set-opacity gradient-layer value-blue) (let* ((merged-layer (car (gimp-image-merge-visible-layers img CLIP-TO-IMAGE)))) @@ -85,7 +86,7 @@ SF-ADJUSTMENT "Blue intensity" '(60 0 100 1 10 0 0) SF-ADJUSTMENT "Brightness" '(0 -1 1 0.0001 0.0001 2 0) SF-ADJUSTMENT "Contrast" '(0 -1 1 0.0001 0.0001 2 0) - + SF-TOGGLE "Invert" FALSE ) (script-fu-menu-register "przem-prussian-blue-effect-v3" diff --git a/script-fu/3.0/przem-true-cyjanotype-v3.scm b/script-fu/3.0/przem-true-cyjanotype-v3.scm new file mode 100644 index 0000000..163e8be --- /dev/null +++ b/script-fu/3.0/przem-true-cyjanotype-v3.scm @@ -0,0 +1,93 @@ +; przem-true-cyjantype-v3 - imituje efekt prawdziwej cyjanotypii +; author: PRP +; licencja: Public Domain +; Gdańsk - 14-10-2025 +; ver. 2.251014-1 + +(define (przem-true-cyjantype-v3 image drawable black normalize value-blue invert replace) + (let* ((gradient-layer 0) + (type-layer (vector-ref drawable 0)) + (mask (car (gimp-channel-new image "Engraving Mask" (car (gimp-image-get-width image)) (car (gimp-image-get-height image)) black '(0.4 0.4 0.2 0.0 0.0 0.0 0.0 0.0 0.0)))) + (layer (vector-ref drawable 0)) + (type (car (gimp-drawable-type layer))) + (gradient-reverse FALSE) + ) + (gimp-context-push) + (gimp-image-undo-group-start image) + + ;; jeśli obraz jest szary to konwertuje go na RGB - tak na sztukę + (if (> (car (gimp-drawable-type type-layer)) 1) + (gimp-image-convert-rgb image)) + + ; Konwersja obrazu do skali szarości + (if (= type RGB-IMAGE) + (gimp-drawable-desaturate type-layer DESATURATE-LIGHTNESS) + ) + + + ; dla obrazów przestrzeni RGB i Gray, utworzenie nowej warstwy, dopiero po kowersji na rgb + (set! gradient-layer (car (gimp-layer-new image "Prussian Blue" (car (gimp-image-get-width image)) (car (gimp-image-get-height image)) RGBA-IMAGE 100 LAYER-MODE-NORMAL))) + + (gimp-context-set-foreground '(0 51 102)) ; Kolor błękitu pruskiego + (gimp-context-set-background '(0 0 0)) + + (gimp-image-insert-channel image mask -1 0) + + + (gimp-image-insert-layer image gradient-layer 0 -1) + + (let* ((curves-layer (car (gimp-layer-copy gradient-layer TRUE))) + (gimp-drawable-curves-spline curves-layer HISTOGRAM-VALUE 10 #(0 0 32 40 128 140 220 230 255 255)) + (gimp-layer-set-opacity curves-layer 100) + + )) + + (gimp-context-set-gradient-reverse gradient-reverse) + (gimp-drawable-edit-gradient-fill gradient-layer + GRADIENT-LINEAR 0 + FALSE 1 0 + TRUE + 0 0 0 0) + (gimp-layer-set-opacity gradient-layer value-blue) + + + ;(if (= invert TRUE) + ;(gimp-invert drawable)) + + ;(if (= replace TRUE) + ; ; Wybierz tylko czarne piksele + ; (gimp-image-select-color image CHANNEL-OP-REPLACE drawable '(0 0 0)) + + ; ; Wypełnij wybrane obszary kolorem granatowym + ; (gimp-context-set-foreground '(0 0 128)) ; RGB dla granatowego + ; (gimp-edit-bucket-fill drawable BUCKET-FILL-FG LAYER-MODE-NORMAL 100 0 FALSE 0 0) + ; ; Odznacz selekcję + ; (gimp-selection-none image)) + + (let* ((merged-layer (car (gimp-image-merge-visible-layers image CLIP-TO-IMAGE)))) + (gimp-item-set-visible merged-layer TRUE)) + + + (gimp-image-undo-group-end image) + (gimp-displays-flush) + (gimp-context-pop) + ) +) + +(script-fu-register-filter "przem-true-cyjantype-v3" + _"Apply true cyjanotype effect" + _"Pseudo-prawdziwa próba imitacji cyjanotypii" + "Przemysław R. Pietraszczyk" + "Public Domain" + "2025-09-21" + "RGB* GRAY*" + SF-ONE-OR-MORE-DRAWABLE + SF-ADJUSTMENT "Black" '(5 0 100 1 10 0 0) + SF-TOGGLE "Normalize to 100%" TRUE + SF-ADJUSTMENT "Blue intensity" '(50 0 100 1 10 0 0) + SF-TOGGLE "Invert colors" FALSE + SF-TOGGLE "Replace black" FALSE +) + +(script-fu-menu-register "przem-true-cyjantype-v3" + "/Filters/PIETRASZCZYK/") diff --git a/script-fu/changelog.md b/script-fu/changelog.md index 202aee4..cb7799c 100644 --- a/script-fu/changelog.md +++ b/script-fu/changelog.md @@ -1,3 +1,9 @@ +# [2.251014-1] przem-true-cyjanotype-v3.scm +* Wstępna wersjia, namiastka z wersji 2.10 + +# [2.251014-0] przem-true-cyjanotype-v3.scm +* Pierwsze koty za płoty z portem kolejnego filtra + # [2.251006-0] przem-ilford-expired-v3.scm * Nadanie wartwom transparentności * Polączenie i uwidoczniene powstałej warstwy -- cgit v1.2.3