ГИМП Скрипт-Фу Выгрузка слоев в пнг - Lisp
Формулировка задачи:
Нижеприведенный скрипт перебирает все слои, берет их имена и сохраняет в картинки 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 <removed@mail.ru>"
- "(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"
- )
Решение задачи: «ГИМП Скрипт-Фу Выгрузка слоев в пнг»
textual
Листинг программы
- (use-modules (srfi srfi-43))
- (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)))))
- (let ((layers-count (vector-length (cadr (gimp-image-get-layers img)))))
- (vector-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)))
- (if (not (string-position #\c name))
- (gimp-file-save RUN-NONINTERACTIVE img layer outpath name))))
- (cadr (gimp-image-get-layers img))))))
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д