2015-04-25 3 views
0

Я пытаюсь подготовить сценарий для автоматического изменения размера файлов изображений. Я нашел это LINK, но я не могу понять, как его использовать.изменить размер изображения с помощью скрипта-fu gimp

Любой может предоставить рабочий сценарий, который я могу использовать в качестве отправной точки?

+3

Почему бы просто не использовать ImageMagick? Он установлен на большинстве дистрибутивов Linux и легко доступен для всех других хороших ОС и Windows. 'convert image.jpg -resize 256x200 result.jpg' –

+0

Это, но я определенно предлагаю вам установить его, используя' homebrew', если вы можете, или MacPorts, хотя я не использовал последний. –

+0

Если вы находитесь на Mac, вы можете использовать 'sips'. Введите 'man sips' в терминал. –

ответ

2

Следующая функция изменяет размер изображения:

(define (resize-image filename-in filename-out new-width new-height) 
    (let* ((image (car (gimp-file-load RUN-NONINTERACTIVE filename-in ""))) 
     (drawable (car (gimp-image-active-drawable image))) 
     ) 

    (gimp-image-scale image new-width new-height) 
    (gimp-file-save RUN-NONINTERACTIVE image drawable filename-out "") 
) 
) 

Теперь, изменение размеров всех JPG-х в каталоге:

(define (file-basename filename) 
    (let* 
    (
     (broken-up (strbreakup filename ".")) 
     (wo-last-r (cdr (reverse broken-up))) 
     (wo-last (reverse wo-last-r)) 
     (result "") 
    ) 
    (while wo-last 
     (set! result (string-append result (car wo-last))) 
     (set! wo-last (cdr wo-last)) 
     (if (> (length wo-last) 0) (set! result (string-append result "."))) 
    ) 
    result 
) 
) 

(define (ex_09 file-pattern new-width new-height) 

    (let* ((filelist (cadr (file-glob file-pattern 1)))) 

    (while (not (null? filelist)) 
     (let* ((cur-file (car filelist))) 

     (resize-image 
      cur-file 
      (string-append (file-basename cur-file) "_resized.jpg") 
      100 
      100 
     ) 

     (set! filelist (cdr filelist)) 
    ) 
    ) 
) 
) 

Я думаю, что это ваш ответ.

+0

Я могу назвать эти функции? – Nicholas

0

Код исходит от этого адреса. http://www.adp-gmbh.ch/misc/tools/script_fu/ex_09.html

Из коробки он не работает для меня. Я внесла некоторые изменения:

В файле file_basename.scm я удаляю некоторые вещи, с которыми мне не обойтись. Так змененные файлы создаются в той же директории, чем исходные файлы:

(define (file-basename filename) 
    (let* 
    (
     (broken-up (strbreakup filename ".")) 
     (wo-last-r (cdr (reverse broken-up))) 
     (wo-last (reverse wo-last-r)) 
     (car broken-up) 
) 
) 

В файле ex_09.scm: Я просто использовал новую ширину и переменные новую высоту.

(define (ex_09 file-pattern new-width new-height) 
    (let* ((filelist (cadr (file-glob file-pattern 1)))) 
    (while (not (null? filelist)) 
     (let* ((cur-file (car filelist))) 

     (resize-image 
     cur-file 
     (string-append (file-basename cur-file) "_resized.jpg") 
     new-width 
     new-height 
    ) 

    (set! filelist (cdr filelist)) 
    ) 
) 
) 
) 

Hop this помогает! и поблагодарить Йо Рене Нюффенгера за код. :)

Смежные вопросы