Нижеприведенный скрипт перебирает все слои, берет их имена и сохраняет в картинки png. Пожалуйста, помогите мне подредактировать код, т. к. с Scheme Script-Fu знаком первый день, программирую на ООП языках. Нужно, чтобы, если в имени слоя был символ «-», то слой НЕ сохраняется в png картинку.
(define (script-fu-export-layers img drw path outnameformat)
; credit to Vijay Mathew on Stack Overflow for the expand keywords function
(let ((expand-keywords (lambda(format tokens)
(let loop ((slist (string->list format))
(in-replace-mode #f)
(result ""))
(if (not (null? slist))
(let ((c (car slist)))
(cond (in-replace-mode
(let ((token (car (cdr (assoc c tokens)))))
(loop (cdr slist) #f (string-append result token))))
((char=? c #\~)
(loop (cdr slist) #t result))
(else
(loop (cdr slist) #f (
string-append result (make-string 1 c))))))
result)))))
ДЕЛАТЬ ПРОВЕРКУ НА СИМВОЛ, ВИДИМО НАДО ГДЕ-ТО В НИЖЕПРИВЕДЕННОМ БЛОКЕ КОДА
(for-each (lambda (layer)
(let* (
(name (expand-keywords outnameformat `(
(#\~ "~")
(#\i ,(car(gimp-image-get-name img)))
(#\l ,(car(gimp-drawable-get-name layer))))))
(outpath (string-append path "/" name)))
(gimp-file-save RUN-NONINTERACTIVE img layer outpath name)
)) (vector->list(cadr (gimp-image-get-layers img)))))
)
(script-fu-register
"script-fu-export-layers"
"Экспорт слоёв"
"Экспортирует слои в отдельные изображения в формате PNG"
"Stuart P. Bentley <stuart@testtrack4.com>"
"(C) 2011 by Stuart P. Bentley"
"June 28, 2011"
"*"
SF-IMAGE "Image" 0
SF-DRAWABLE "Drawable" 0
SF-DIRNAME "Выбрать папку для сохранения" ""
SF-STRING "Формат имени изображений\
(~i = Имя изображения\
~l = Имя слоя\
~~ = ~)"
"~l.png"
)