Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; (morph-filename "facepalm.jpg" "png") returns "facepalm.png"
- (define (morph-filename orig-name new-extension)
- (let* ((buffer (vector "" "" "")))
- (if (re-match "^(.*)[.]([^.]+)$" orig-name buffer)
- (string-append (substring orig-name 0 (car (vector-ref buffer 2))) new-extension)
- )
- )
- )
- (define (script-fu-readability inImage inLayer inRadius inHigh-input)
- (let* (
- (layer2 0)
- )
- (gimp-image-undo-group-start inImage)
- (if (not (= (car (gimp-image-base-type inImage)) GRAY)) (gimp-image-convert-grayscale inImage)) ; not gray? convert to gray
- ;(gimp-desaturate-full inLayer DESATURATE-LUMINOSITY) ; desaturate by luminosity
- (set! layer2 (car (gimp-layer-copy inLayer FALSE))) ; copy layer (duplicate: part 1)
- (gimp-image-add-layer inImage layer2 -1) ; attach it to the image (duplicate: part 2)
- (plug-in-despeckle RUN-NONINTERACTIVE inImage layer2 inRadius 0 -1 256) ; median blur using despeckle
- (gimp-layer-set-mode layer2 DIFFERENCE-MODE) ; set layer2 mode to Difference
- (set! inLayer (car (gimp-image-flatten inImage))) ; flatten image
- (gimp-invert inLayer) ; inverting colors
- (gimp-levels inLayer HISTOGRAM-VALUE 0 inHigh-input 0.1 0 255) ; color levels
- ;(gimp-image-convert-indexed inImage FIXED-DITHER MAKE-PALETTE 4 FALSE FALSE "") ; convert to indexed image
- (gimp-image-undo-group-end inImage)
- )
- )
- (define (script-fu-batch-readability inInFolder inOutFolder inRadius inHigh-input)
- (let* ((filelist (cadr (file-glob (string-append inInFolder DIR-SEPARATOR "*") 1))))
- ; filelist now contains names of all the files in the input folder
- (while (not (null? filelist))
- (let* ((filename (car filelist)) ; get one of the filenames
- (image (car (gimp-file-load RUN-NONINTERACTIVE filename filename))) ; load image
- (layer (car (gimp-image-get-active-layer image))) ; get it's active layer
- )
- (script-fu-readability image layer inRadius inHigh-input)
- (set! layer (car (gimp-image-get-active-layer image))) ; get layer again 'cause it was changed in function
- (set! filename (string-append inOutFolder DIR-SEPARATOR (morph-filename (car (gimp-image-get-name image)) "png"))) ; change folder and extension
- (file-png-save2 RUN-NONINTERACTIVE image layer filename filename 0 9 0 0 0 1 0 0 0) ; save as png
- (gimp-image-delete image) ; forget image
- )
- (set! filelist (cdr filelist)) ; throw away this name from the list
- )
- )
- )
- (script-fu-register
- "script-fu-readability"
- "Readability"
- "Improves text readability on the photos. It's needed only when there is a non-uniform illumination"
- "Dragonizer"
- "Copyleft, use it at your own sweet will"
- "January 7, 2011"
- "RGB* GRAY* INDEXED*"
- SF-IMAGE "The image" 0
- SF-DRAWABLE "The layer" 0
- SF-ADJUSTMENT "Median blur: radius" '(15 1 20 1 5 0 SF-SLIDER)
- SF-ADJUSTMENT "Levels: intensity of highest input" '(235 0 255 1 10 0 SF-SPINNER)
- )
- (script-fu-menu-register "script-fu-readability" "<Image>/Filters/User's scripts")
- (script-fu-register
- "script-fu-batch-readability"
- "Batch readability"
- "Improves text readability on the photos (batch procedure). It's needed only when there is a non-uniform illumination"
- "Dragonizer"
- "Copyleft, use it at your own sweet will"
- "January 7, 2011"
- ""
- SF-DIRNAME "Input folder" DIR-SEPARATOR
- SF-DIRNAME "Output folder" DIR-SEPARATOR
- SF-ADJUSTMENT "Median blur: radius" '(15 1 20 1 5 0 SF-SLIDER)
- SF-ADJUSTMENT "Levels: intensity of highest input" '(235 0 255 1 10 0 SF-SPINNER)
- )
- (script-fu-menu-register "script-fu-batch-readability" "<Image>/Filters/User's scripts")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement