ГИМП Скрипт-Фу Выгрузка слоев в пнг - Lisp

Узнай цену своей работы

Формулировка задачи:

Нижеприведенный скрипт перебирает все слои, берет их имена и сохраняет в картинки png. Пожалуйста, помогите мне подредактировать код, т.к. с Scheme Script-Fu знаком первый день, программирую на ООП языках. Нужно, чтобы, если в имени слоя был символ «-», то слой НЕ сохраняется в png картинку. ..
Листинг программы
  1. (define (script-fu-export-layers img drw path outnameformat)
  2. ; credit to Vijay Mathew on Stack Overflow for the expand keywords function
  3. (let ((expand-keywords (lambda(format tokens)
  4. (let loop ((slist (string->list format))
  5. (in-replace-mode #f)
  6. (result ""))
  7. (if (not (null? slist))
  8. (let ((c (car slist)))
  9. (cond (in-replace-mode
  10. (let ((token (car (cdr (assoc c tokens)))))
  11. (loop (cdr slist) #f (string-append result token))))
  12. ((char=? c #\~)
  13. (loop (cdr slist) #t result))
  14. (else
  15. (loop (cdr slist) #f (
  16. string-append result (make-string 1 c))))))
  17. result)))))
  18. ДЕЛАТЬ ПРОВЕРКУ НА СИМВОЛ ВИДИМО НАДО ГДЕ-ТО В НИЖЕПРИВЕДЕННОМ БЛОКЕ КОДА
  19. (for-each (lambda (layer)
  20. (let* (
  21. (name (expand-keywords outnameformat `(
  22. (#\~ "~")
  23. (#\i ,(car(gimp-image-get-name img)))
  24. (#\l ,(car(gimp-drawable-get-name layer))))))
  25. (outpath (string-append path "/" name)))
  26. (gimp-file-save RUN-NONINTERACTIVE img layer outpath name)
  27. )) (vector->list(cadr (gimp-image-get-layers img)))))
  28. )
  29. (script-fu-register
  30. "script-fu-export-layers"
  31. "Экспорт слоёв"
  32. "Экспортирует слои в отдельные изображения в формате PNG"
  33. "Stuart P. Bentley <removed@mail.ru>"
  34. "(C) 2011 by Stuart P. Bentley"
  35. "June 28, 2011"
  36. "*"
  37. SF-IMAGE "Image" 0
  38. SF-DRAWABLE "Drawable" 0
  39. SF-DIRNAME "Выбрать папку для сохранения" ""
  40. SF-STRING "Формат имени изображений\
  41. (~i = Имя изображения\
  42. ~l = Имя слоя\
  43. ~~ = ~)"
  44. "~l.png"
  45. )

Решение задачи: «ГИМП Скрипт-Фу Выгрузка слоев в пнг»

textual
Листинг программы
  1. (use-modules (srfi srfi-43))
  2.  
  3. (define (script-fu-export-layers img drw path outnameformat)
  4.   ; credit to Vijay Mathew on Stack Overflow for the expand keywords function
  5.   (let ((expand-keywords (lambda (format tokens)
  6.                            (let loop ((slist (string->list format))
  7.                                       (in-replace-mode #f)
  8.                                       (result ""))
  9.                              (if (not (null? slist))
  10.                                  (let ((c (car slist)))
  11.                                   (cond (in-replace-mode
  12.                                           (let ((token (car (cdr (assoc c tokens)))))
  13.                                            (loop (cdr slist) #f (string-append result token))))
  14.                                         ((char=? c #\~)
  15.                                          (loop (cdr slist) #t result))
  16.                                         (else
  17.                                           (loop (cdr slist) #f (string-append result (make-string 1 c))))))
  18.                                  result)))))
  19.     (let ((layers-count (vector-length (cadr (gimp-image-get-layers img)))))
  20.      (vector-for-each (lambda (layer)
  21.                         (let* ((name (expand-keywords outnameformat `((#\~ "~")
  22.                                                                       (#\i ,(car(gimp-image-get-name img)))
  23.                                                                       (#\l ,(car(gimp-drawable-get-name layer))))))
  24.                                (outpath (string-append path "/" name)))
  25.                           (if (not (string-position #\c name))
  26.                               (gimp-file-save RUN-NONINTERACTIVE img layer outpath name))))
  27.                       (cadr (gimp-image-get-layers img))))))

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.083 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут