; 210_color_bw-from-graphic.scm
; last modified/tested by Paul Sherman [gimphelp.org]
; Saturday, 06/27/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
; Serge Mankovski B/W Film Simulation
;
; Modified by Paul Sherman 12/30/2007
; made to work with GIMP-2.4+
; simplified film type menu
; modified (xtra steps) in High-Contrast for use with graphics
; (to compensate for the "blockiness" when rendering clip art,
; yielding a lighter "sketched" look.)
;
; Copyright Serge Mankovski (sevato@mankovski.com)
; Toronto, Ontario, 2007
;
; Version 1.1 March 30, 2007
; Converts selected layer into Black and White using channel mixer
; Uses channel presets found on Internet. I am not sure about the origin of these
; settings and I do not know if they really produce result resembling tonal qualities of
; the film, but it produces nice looking B/W and it is a useful way to convert to black and white
;
; Change Log:
; Version 1.1
; - added IR film simulation
; - added color filters applied before b/w conversion
; - added saturation option
; - Gimp 2.3.15+ support
;==============================================================
(define (create-new-layer img drawable)
(define layer (car (gimp-layer-copy drawable TRUE)))
(gimp-image-insert-layer img layer 0 -1)
layer)
(define (210-bw-from-graphic
img
drawable
film
filter
rename
new-layer
increase-local-contrast
auto-levels
drop-gamma
saturate
)
(gimp-image-undo-group-start img)
(if (not (= RGB (car (gimp-image-base-type img))))
(gimp-image-convert-rgb img))
(let*
((bw-layer img)
(chan-name ""))
(if (equal? new-layer TRUE)
(set! bw-layer (create-new-layer img drawable))
(set! bw-layer drawable)
)
(if (equal? saturate TRUE)
(plug-in-colors-channel-mixer 1 img bw-layer FALSE 1.3 -0.15 -0.15 -0.15 1.3 -0.15 -0.15 -0.15 1.3)
())
(if (equal? drop-gamma TRUE) (gimp-levels bw-layer 0 0 255 0.9 0 255) ())
(cond
; Yellow Filter
((= filter 1)
(gimp-hue-saturation bw-layer 0 -5 0 33)
(set! chan-name (string-append chan-name " Yellow Filter")))
; Orange Filter
((= filter 2)
(gimp-hue-saturation bw-layer 0 -20 0 25)
(set! chan-name (string-append chan-name " Orange Filter")))
; Red Filter
((= filter 3)
(gimp-hue-saturation bw-layer 0 -41 0 25)
(set! chan-name (string-append chan-name " Red Filter")))
; Green Filter
((= filter 4)
(gimp-hue-saturation bw-layer 0 90 0 33)
(set! chan-name (string-append chan-name " Green Filter")))
; Blue Filter
((= filter 5)
(gimp-hue-saturation bw-layer 0 -145 0 25)
(set! chan-name (string-append chan-name " Blue Filter")))
)
(cond
; High Contrast
((= film 0)
(set! chan-name (string-append chan-name " High Contrast"))
(plug-in-colors-channel-mixer 1 img bw-layer TRUE 0.40 0.34 0.60 0.40 0.34 0.60 0.40 0.34 0.60 )
(gimp-levels bw-layer HISTOGRAM-VALUE 0 255 1.4 1 255))
(plug-in-unsharp-mask 1 img bw-layer 5.0 0.30 10)
; Normal Contrast
((= film 1)
(set! chan-name (string-append chan-name " Normal Contrast"))
(plug-in-colors-channel-mixer 1 img bw-layer TRUE 0.43 0.33 0.30 0.43 0.33 0.30 0.43 0.33 0.30 ))
)
(if (equal? rename TRUE) (gimp-item-set-name bw-layer chan-name) () )
(if (equal? increase-local-contrast TRUE) (plug-in-unsharp-mask 1 img bw-layer 30.0 0.25 9) ())
(gimp-image-convert-grayscale img)
(gimp-image-undo-group-end img)
)
(gimp-displays-flush)
)
(script-fu-register "210-bw-from-graphic"
"BW from Graphic"
"Black and White From a Color Graphic. Made for use specifically for rendering clip art in greyscale. High-Contrast setting will yield a sketchy look instead of the blockinesss usually rendered from graphics when converting to grey.\n\nby Paul Sherman\ngimphelp.org"
"Modified version by Paul Sherman
Original by Serge Mankovski (sevato@mankvoski.com)
Original copyright info below:"
"2007, Serge Mankovski, Toronto, ON, Canada"
"05.01.2007"
"*"
SF-IMAGE "Image" 0
SF-DRAWABLE "Current Layer" 0
SF-OPTION "Film" '("High Contrast" "Normal Contrast")
SF-OPTION "Filter"
'(
"Select"
"Yellow"
"Orange"
"Red"
"Green"
"Blue"
)
SF-TOGGLE "Rename Layer?" TRUE
SF-TOGGLE "New Layer?" FALSE
SF-TOGGLE "Increase Local Contrast" FALSE
SF-TOGGLE "Auto Levels" FALSE
SF-TOGGLE "Drop Gamma 10%" FALSE
SF-TOGGLE "Saturate" FALSE
)
(script-fu-menu-register "210-bw-from-graphic" "/Script-Fu/Color")