Re: [Gimp-user] Image transformation batch processing
- From: Saul Goode <saul crazyauntgail com>
- To: "gimp-user-list gnome org" <gimp-user-list gnome org>
- Subject: Re: [Gimp-user] Image transformation batch processing
- Date: Tue, 26 May 2015 21:43:34 +0000 (UTC)
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]