; przem-apply-sepia-v3 - Script-fu dodający prawdziwą sepie do zdjęcia ; author: PRP ; licencja: GPL v3 ; Gdańsk - 07-02-2025 ; ver. 2.2502019-0~alpha for GIMP 3 ; ; This program is free software: you can redistribute it and/or modify ; it under the terms of the GNU General Public License as published by ; the Free Software Foundation; either version 3 of the License, or ; (at your option) any later version. ; ; This program is distributed in the hope that it will be useful, ; but WITHOUT ANY WARRANTY; without even the implied warranty of ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ; GNU General Public License for more details. ; ; You should have received a copy of the GNU General Public License ; along with this program. If not, see . ; (define (przem-apply-sepia-v3 image drawable value-slider-sepia shadow-sepia gradient-reverse gradient-shape in-sepia) (let* ( (image-width (car (gimp-image-get-width image))) (image-height (car (gimp-image-get-height image))) (layer (vector-ref drawable 0)) (type (car (gimp-drawable-type layer))) (center-x (/ image-width 2)) (center-y (/ image-height 2)) (radius (sqrt (+ (* center-x center-x) (* center-y center-y)))) (the-layer 0) ) (gimp-image-undo-group-start image) ;(gimp-image-undo-disable image) ; TODO - z kodu old-photo wynika że nie trzeba konwertować na RGB - mimo tego kod nie dziala jak należy ; jeśli obraz jest szary to konwertuje go na RGB - w RC2 ten numer nie przedzie ;;(if (= type GRAY-IMAGE) ; (gimp-image-convert-rgb image) ) ; lub ... ;(if (> (car (gimp-drawable-type (vector-ref drawable 0))) 1 ) ; (gimp-image-convert-rgb image)) (gimp-selection-all image) (set! the-layer (car (gimp-image-flatten image))) ; Konwersja obrazu do skali szarości ;(if (= type RGB-IMAGE) ;(gimp-drawable-desaturate the-layer DESATURATE-LIGHTNESS) ;) (if (= in-sepia TRUE) (begin (gimp-drawable-desaturate the-layer DESATURATE-LIGHTNESS) (gimp-drawable-brightness-contrast the-layer -0.078125 -0.15625) (gimp-drawable-color-balance the-layer TRANSFER-SHADOWS TRUE 30 0 -30) ) ) (let ( (sepia-layer (car (gimp-layer-new image "Sepia" image-width image-height RGB-IMAGE 100 LAYER-MODE-NORMAL))) ) (gimp-context-set-foreground '(112 66 20)) ; sepia ciemniejszy (gimp-context-set-background '(233 213 186)) ; sepia jasniejszy ;(gimp-context-set-background '(210 180 140)) ; sepia jasniejsza ; Dodanie koloru sepii (gimp-image-insert-layer image sepia-layer 0 -1) (gimp-context-push) ;(plug-in-checkerboard #:run-mode RUN-NONINTERACTIVE ; #:image image ; #:drawables (vector drawable) ; #:psychobilly 0 ; #:check-size 8) (plug-in-checkerboard RUN-NONINTERACTIVE image (vector sepia-layer) 0 8) (gimp-context-pop) (gimp-context-push) ;(gimp-selection-all image) ; tak było w v. 2.10 ;(gimp-edit-blend sepia-layer FG-BG-RGB-MODE NORMAL-MODE GRADIENT-LINEAR 100 0 REPEAT-NONE FALSE TRUE 3 0 TRUE 0 0 image-width image-height) (if (= gradient-shape TRUE) (begin (gimp-context-set-gradient-reverse gradient-reverse) (gimp-drawable-edit-gradient-fill sepia-layer GRADIENT-LINEAR (- 100 shadow-sepia) FALSE 1 0 TRUE 0 0 image-width image-height) ) (begin (gimp-context-set-gradient-reverse gradient-reverse) (gimp-drawable-edit-gradient-fill sepia-layer GRADIENT-SHAPEBURST-DIMPLED (- 100 shadow-sepia) FALSE 1 0 TRUE 0 0 center-x center-y) ) ) (gimp-context-pop) ; Zmiana krycia warstwy (gimp-layer-set-opacity sepia-layer value-slider-sepia) (gimp-image-merge-down image sepia-layer CLIP-TO-IMAGE) ) ; let (gimp-selection-none image) (gimp-image-undo-group-end image) ;(gimp-image-undo-enable image) (gimp-displays-flush) ) ) (script-fu-register-filter "przem-apply-sepia-v3" _"_Apply a sepia effect to the image" _"Tworzy obraz sepii" "Przemyslaw R. Pietraszczyk" "GPL v3" "2025-02-07" "RGB* GRAY*" SF-ONE-OR-MORE-DRAWABLE SF-ADJUSTMENT _"Sepia intensity" '(50 0 100 1 10 0 0) ; Suwak poziomy SF-ADJUSTMENT _"Shadow Sepia" '(30 0 100 1 10 0 0) ; Suwak poziomy SF-TOGGLE _"Gradient reverse" FALSE SF-TOGGLE _"Shape" TRUE SF-TOGGLE _"Sepia" TRUE ) (script-fu-menu-register "przem-apply-sepia-v3" "/Filters/PIETRASZCZYK/")