Advertisement
Guest User

Script-fu Readability

a guest
Jan 7th, 2011
925
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lisp 3.59 KB | None | 0 0
  1. ; (morph-filename "facepalm.jpg" "png") returns "facepalm.png"
  2. (define (morph-filename orig-name new-extension)
  3.  (let* ((buffer (vector "" "" "")))
  4.   (if (re-match "^(.*)[.]([^.]+)$" orig-name buffer)
  5.    (string-append (substring orig-name 0 (car (vector-ref buffer 2))) new-extension)
  6.   )
  7.  )
  8. )
  9.  
  10. (define (script-fu-readability inImage inLayer inRadius inHigh-input)
  11.  (let* (
  12.    (layer2 0)
  13.   )
  14.   (gimp-image-undo-group-start inImage)
  15.   (if (not (= (car (gimp-image-base-type inImage)) GRAY)) (gimp-image-convert-grayscale inImage)) ; not gray? convert to gray
  16.   ;(gimp-desaturate-full inLayer DESATURATE-LUMINOSITY) ; desaturate by luminosity
  17.   (set! layer2 (car (gimp-layer-copy inLayer FALSE))) ; copy layer (duplicate: part 1)
  18.   (gimp-image-add-layer inImage layer2 -1) ; attach it to the image (duplicate: part 2)
  19.   (plug-in-despeckle RUN-NONINTERACTIVE inImage layer2 inRadius 0 -1 256) ; median blur using despeckle
  20.   (gimp-layer-set-mode layer2 DIFFERENCE-MODE) ; set layer2 mode to Difference
  21.   (set! inLayer (car (gimp-image-flatten inImage))) ; flatten image
  22.   (gimp-invert inLayer) ; inverting colors
  23.   (gimp-levels inLayer HISTOGRAM-VALUE 0 inHigh-input 0.1 0 255) ; color levels
  24.   ;(gimp-image-convert-indexed inImage FIXED-DITHER MAKE-PALETTE 4 FALSE FALSE "") ; convert to indexed image
  25.   (gimp-image-undo-group-end inImage)
  26.  )
  27. )
  28.  
  29. (define (script-fu-batch-readability inInFolder inOutFolder inRadius inHigh-input)
  30.   (let* ((filelist (cadr (file-glob (string-append inInFolder DIR-SEPARATOR "*") 1))))
  31.   ; filelist now contains names of all the files in the input folder
  32.     (while (not (null? filelist))
  33.       (let* ((filename (car filelist)) ; get one of the filenames
  34.           (image (car (gimp-file-load RUN-NONINTERACTIVE filename filename))) ; load image
  35.           (layer (car (gimp-image-get-active-layer image))) ; get it's active layer
  36.         )
  37.         (script-fu-readability image layer inRadius inHigh-input)
  38.         (set! layer (car (gimp-image-get-active-layer image))) ; get layer again 'cause it was changed in function
  39.         (set! filename (string-append inOutFolder DIR-SEPARATOR (morph-filename (car (gimp-image-get-name image)) "png"))) ; change folder and extension
  40.         (file-png-save2 RUN-NONINTERACTIVE image layer filename filename 0 9 0 0 0 1 0 0 0) ; save as png
  41.         (gimp-image-delete image) ; forget image
  42.       )
  43.       (set! filelist (cdr filelist)) ; throw away this name from the list
  44.     )
  45.   )
  46. )
  47.  
  48. (script-fu-register
  49.  "script-fu-readability"
  50.  "Readability"
  51.  "Improves text readability on the photos. It's needed only when there is a non-uniform illumination"
  52.  "Dragonizer"
  53.  "Copyleft, use it at your own sweet will"
  54.  "January 7, 2011"
  55.  "RGB* GRAY* INDEXED*"
  56.  SF-IMAGE      "The image"     0
  57.  SF-DRAWABLE   "The layer"     0
  58.  SF-ADJUSTMENT "Median blur: radius" '(15 1 20 1 5 0 SF-SLIDER)
  59.  SF-ADJUSTMENT "Levels: intensity of highest input" '(235 0 255 1 10 0 SF-SPINNER)
  60. )
  61. (script-fu-menu-register "script-fu-readability" "<Image>/Filters/User's scripts")
  62.  
  63. (script-fu-register
  64.  "script-fu-batch-readability"
  65.  "Batch readability"
  66.  "Improves text readability on the photos (batch procedure). It's needed only when there is a non-uniform illumination"
  67.  "Dragonizer"
  68.  "Copyleft, use it at your own sweet will"
  69.  "January 7, 2011"
  70.  ""
  71.  SF-DIRNAME "Input folder" DIR-SEPARATOR
  72.  SF-DIRNAME "Output folder" DIR-SEPARATOR
  73.  SF-ADJUSTMENT "Median blur: radius" '(15 1 20 1 5 0 SF-SLIDER)
  74.  SF-ADJUSTMENT "Levels: intensity of highest input" '(235 0 255 1 10 0 SF-SPINNER)
  75. )
  76. (script-fu-menu-register "script-fu-batch-readability" "<Image>/Filters/User's scripts")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement