seb*_*ebf 1 scripting scheme if-statement gimp
我正在尝试为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)
)
Run Code Online (Sandbox Code Playgroud)
我已经尝试使用when和if-else但无论怎样执行条件块内没有声明(即如果我有真假同一语句中如果没有会被处决).我的条件完全被忽略但我不知道为什么.GIMP不会报告任何语法错误.
我怀疑我在define声明中没有条件,除了有一个在它下面工作.
任何人都可以看到有什么问题?为什么我的条件被忽略了?
when表达式有几个问题:
(> 1 0)总是正确的,因此它是无用的set!when表达式移动到变量定义部分之外let*,并使其成为主体中的第一个语句let*你需要做的是这样的事情:
(define (script-fu-batch-resize globexp globext src)
(define (resize-img n f newx suffix srcdir removetailingunderscore)
(let* ((fname (car f))
(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)))
(extension (cadr (strbreakup fullname ".")))
(img (car (gimp-file-load 1 fname fname))))
(when (> 1 0)
(set! name0 name1))
<rest of the body>)))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
895 次 |
| 最近记录: |