Re: [Gimp-user] Image transformation batch processing



The following code will work on GNU/Linux systems. It will only process the filesin the current directory (it 
will not recurse into subdirectories).

gimp -i -f -b - <<HERE
  (let ((outdir "/tmp/destdir") ; <<== change this to the destination folder (which MUST exist)
        (patterns '("*.gif" "*.jpg" "*.png")))
    (when (and (file-exists? outdir) (= (file-type outdir) 2))
      (let loop ((filepaths (foldr  append '() (map (lambda (x) (cadr (file-glob x 1))) patterns))))
        (unless (null? filepaths)
          (let* ((filepath (car filepaths))
                 (image (catch #f (car (gimp-file-load RUN-NONINTERACTIVE
                                                       filepath 
                                                       filepath ))))
                 (layer (if image (car (gimp-image-get-active-layer image)) #f))
                 (filename (string-append outdir
                                          DIR-SEPARATOR
                                          (car (last (strbreakup filepath DIR-SEPARATOR))))))
            (unless (null? filepaths)
              (when image
                (let* ((w (car (gimp-image-width image)))
                       (h (car (gimp-image-height image)))
                       (aspect (/ h w))
                       (factor (/ (max w h) 1000)))
                  (when (> factor 1)
                    (gimp-image-scale image (/ w factor) (/ h factor))
                    (set! w (car (gimp-image-width image)))
                    (set! h (car (gimp-image-height image))))
                  (if (< w h)
                    (gimp-image-resize image (max w h) (max w h) (/ (- h w) 2) 0)
                    (gimp-image-resize image (max w h) (max w h) 0 (/ (- w h) 2))))
                (gimp-file-save 1 image (car (gimp-image-flatten image)) filename filename)
                (gimp-image-delete image))
              (loop (cdr filepaths)))))))
    (gimp-quit 0))
HERE




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]