ファイルのサイズ変更と名前変更/コピーを行う GIMP 2.8 用のスキーム スクリプトを作成しようとしています。この一環として、スクリプトで設定されたブール値に基づいて出力ファイル名を変更したいと思います。
ただし、私の条件は無視されています。以下はスクリプトの抜粋です (このスレッドのスクリプトに基づいています)。
(define (script-fu-batch-resize globexp globext src)
(define (resize-img n f newx suffix srcdir removetailingunderscore)
(let* ((fname (car f))
;get path, short name + extension (remember to remove source dir to REPLACE with suffix!)
(fullname (car (last (strbreakup fname "\\"))))
(filepath (substring fname 0 (- (string-length fname) (string-length (string-append srcdir fullname)))))
(name0 (car (strbreakup fullname ".")))
(name1 (substring name0 0 (- (string-length name0) 1)) )
(when
(> 1 0)
(
(name0 (name1) )
)
)
(extension (cadr (strbreakup fullname ".")))
(img (car (gimp-file-load 1 fname fname))))
(gimp-image-undo-disable img)
(let*
(
(oldx (car (gimp-image-width img)))
(oldy (car (gimp-image-height img)))
(newy (/ oldy (/ oldx newx)))
)
(gimp-image-scale img newx newy) ;changed for Gimp v2.6
)
(gimp-file-save 1 img (car (gimp-image-get-active-drawable img)) (string-append filepath suffix "\\" name1 "." extension) fname)
(gimp-image-delete img)
)
(if (= n 1) 1 (resize-img (- n 1) (cdr f) newx suffix srcdir removetailingunderscore))
)
(define sourcepattern (string-append globexp src globext))
(define files (file-glob sourcepattern 0)) ;changed for Gimp v2.6
(resize-img (car files) (car (cdr files)) 55 "micro" src 1)
)
when
and -elseを使用してみif
ましたが、条件付きブロック内のステートメントが実行されなくても (つまり、if で true と false に同じステートメントがあった場合、どちらも実行されません)。私の条件は完全に無視されていますが、その理由はわかりません。GIMP は構文エラーを報告しません。
define
そのすぐ下で機能する条件がある場合を除いて、ステートメント内に条件を含めることはできないと思います。
誰が何が間違っているかを見ることができますか?条件が無視されるのはなぜですか?