Тема: Программирование: не работает скрипт (script-fu)
Очень нужна помощь. Никогда не изучала языки программирования, да и склад ума, видимо, не технический. Сложно въехать... Сегодня накатала такой "скриптик", но он не доделан и не работает.
Никак не могу доделать его, мозгов не хватает.
Смысл скрипта создать поля:
- выцепить ширину и высоту открытой картинки
- определить меньшую сторону, значение меньшей стороны разделить на 25, округлить и умножить на 2
- полученное значение приплюсовать к старым ширине и высоте и создать слой с новыми значениями
- отцентровать слой с картинкой
1. Не могу понять, как из открытой картинки выцепить параметры высоты и ширины.
2. Что нужно вписать вместо "?" в первых двух строках?
3. Почему не получается вписать SF-Image и SF-Drawable в script-fu-registr (gimp начинает ругаться)?
4. Как потом отцентровать картинку?
(define (script-fu-border ?)
(let* ((img (car (gimp-drawable-get-image ?)))
(owidth (car (gimp-image-width img)))
(oheight (car (gimp-image-height img)))
(border (car (if (< oheight owidth) (* 2 (round (/ oheight 25))) (* 2 (round (/ owidth 25))) )))
(width (+ owidth border))
(height (+ height border))
(layer (car (gimp-layer-new img width height 0 “Border-Layer” 100 BEHIND-MODE))) )
(gimp-image-undo-group-start img)
(gimp-image-add-layer img layer 0)
(gimp-image-undo-group-end img) ))
(script-fu-register
“script-fu-border”
“script-fu-border”
“”
“”
“”
“”
“”
“RGB”)
(script-fu-menu-register
“script-fu-border”
“/Filters/My scripts”)Добавлено спустя 1 час 18 минут 38 секунд:
Попробовала переписать скрипт.
Теперь выдает такую ошибку "Error: Invalid type for argument 2 to gimp-file-load ".
В чем смысл ошибки?
(define (script-fu-new filename)
(let*
(
(img (car (gimp-file-load 1 filename filename)))
(drawable (car (gimp-image-get-active-layer img)))
(owidth
(car (gimp-image-width img)))
(oheight
(car (gimp-image-height img)))
(border
(car
(if
(< oheight owidth) (* 2 (round (/ oheight 25))) (* 2 (round (/ owidth 25)))
)))
(width
(car (+ owidth border)))
(height
(car (+ oheight border)))
(layer
(car
(gimp-layer-new img width height 0 "Border-Layer" 100 BEHIND-MODE)))
)
(gimp-image-undo-group-start img)
(gimp-image-add-layer img layer 0)
(gimp-image-undo-group-end img)
))
(script-fu-register
"script-fu-new"
"Border"
"Create border"
"Dasha"
"Dasha"
"30.09.2011"
"RGB"
SF-IMAGE "" 0
SF-DRAWABLE "" 0
SF-FILENAME "File" "")
(script-fu-menu-register "script-fu-new" "<Image>/Filters/My scripts")