; 210_sharpness-softer_orton.scm
; last modified/tested by Paul Sherman [gimphelp.org]
; Wednesday, 07/15/2020 on GIMP 2.10.20
;==================================================
;
; Installation:
; This script should be placed in the user or system-wide script folder.
;
; Windows 7/10
; C:\Program Files\GIMP 2\share\gimp\2.0\scripts
; or
; C:\Users\YOUR-NAME\AppData\Roaming\GIMP\2.10\scripts
;
;
; Linux
; /home/yourname/.config/GIMP/2.10/scripts
; or
; Linux system-wide
; /usr/share/gimp/2.0/scripts
;
;==================================================
;
; LICENSE
;
; 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 .
;
;==============================================================
; Original information
;
; Simulates the Orton effect on your image.
; Last changed: 5 August 2007
; Copyright (C) 2007 Harry Phillips
;
; Changelog:
; Version 1.3 (5th August 2007)
; - Added GPL3 licence
; - Menu location at the top of the script
; - Removed the "script-fu-menu-register" section
;
; Version 1.2
; - Made the script compatible with GIMP 2.3
;==============================================================
(define (210-orton-effect
theImage
theLayer
blurAmount
20on
opacityLevel
)
;Start an undo group so the process can be undone with one undo
(gimp-image-undo-group-start theImage)
(define indexed (car (gimp-drawable-is-indexed theLayer)))
(if (= indexed TRUE)(gimp-image-convert-rgb theImage))
;Select none
(gimp-selection-none theImage)
;Initiate some variables
(let*
(
(sharp (car (gimp-layer-copy theLayer 0)))
(sharp-screen (car (gimp-layer-copy theLayer 0)))
(imageWidth)
(imageHeight)
(merged)
(sharpCopy)
)
;Read the image width and height
(set! imageWidth (car (gimp-image-width theImage)))
(set! imageHeight (car (gimp-image-height theImage)))
;Add the first layer to the image
(gimp-image-insert-layer theImage sharp 0 0)
;Rename the layer
(gimp-item-set-name sharp "Sharp")
;Add the second layer to the image
(gimp-image-insert-layer theImage sharp-screen 0 0)
;Change the mode of the second layer
(gimp-layer-set-mode sharp-screen 4)
;Merge the top layer down and keep track of the newly merged layer
(set! merged (car (gimp-image-merge-down theImage sharp-screen 0)))
;Copy the merged layer
(set! sharpCopy (car (gimp-layer-copy merged 0)))
;Add the copy of the merged layer
(gimp-image-insert-layer theImage sharpCopy 0 0)
;Rename the copied layer
(gimp-item-set-name sharpCopy "Out of focus")
;Setblur factor to 20% of the longest side
(if (= 20on TRUE)
(begin
(if (> imageHeight imageWidth) (set! blurAmount (/ imageWidth 5)) (set! blurAmount (/ imageHeight 5))
)
)
)
;Apply the blur with the supplied blur amount
(plug-in-gauss 1 theImage sharpCopy blurAmount blurAmount 0)
;Change the mode of the sharpCopy
(gimp-layer-set-mode sharpCopy 3)
;Change the sharpCopy layers opacity
(gimp-layer-set-opacity sharpCopy opacityLevel)
;Finish the undo group for the process
(gimp-image-undo-group-end theImage)
;Ensure the updated image is displayed now
(gimp-displays-flush)
)
)
(script-fu-register "210-orton-effect"
"Orton effect"
"Gives the Orton effect on a photo"
"Harry Phillips"
"Harry Phillips"
"Feb. 07 2006"
"*"
SF-IMAGE "Image" 0
SF-DRAWABLE "Drawable" 0
SF-ADJUSTMENT "Blur" '(100 5 10000 1 10 0 1)
SF-TOGGLE "Use 20% of the shortest side for Blur" FALSE
SF-ADJUSTMENT "Opacity" '(90 0 100 1 10 1 0)
)
(script-fu-menu-register "210-orton-effect" "/Script-Fu/Sharpness/Softer")