2015-04-25 1 views
0

J'essaye de préparer un script pour le redimensionnement automatique des fichiers image. J'ai trouvé ce LINK mais je n'arrive pas à comprendre comment l'utiliser. Quelqu'un peut-il fournir un script de travail que je peux utiliser comme point de départ?redimensionner l'image en utilisant script-fu gimp

+3

Pourquoi ne pas utiliser ImageMagick? Il est installé sur la plupart des distributions Linux, et facilement disponible pour tous les autres bons OS et Windows. 'convertir image.jpg -resize 256x200 result.jpg' –

+0

C'est, mais je vous suggérerais certainement de l'installer en utilisant' homebrew' si vous le pouvez - ou MacPorts, bien que je n'ai pas utilisé ce dernier. –

+0

Si vous utilisez un Mac, vous pouvez utiliser 'sips'. Tapez «sips homme» dans le terminal. –

Répondre

2

La fonction suivante redimensionne l'image:

(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 "") 
) 
) 

Maintenant, le redimensionnement tous jpg dans un répertoire:

(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)) 
    ) 
    ) 
) 
) 

Je pense que ceci est votre réponse.

+0

Je peux appeler ces fonctions? – Nicholas

0

Les codes proviennent de cette adresse. http://www.adp-gmbh.ch/misc/tools/script_fu/ex_09.html

Hors de la boîte, cela ne fonctionne pas pour moi. J'ai fait quelques changements:

Dans le fichier file_basename.scm je supprime des choses que je n'ai pas pu contourner. Donc, les fichiers sont créés redimensionnées dans le même répertoire que les fichiers d'origine:

(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) 
) 
) 

Dans le fichier ex_09.scm: Je viens d'utiliser la nouvelle largeur et les variables nouvelle hauteur.

(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 ceci aide! et merci René Nyffenegger pour le code. :)