> 1 <

Автор Сообщение

Khull-Khuum

Members


Статус

2 сообщений

Где: Russia
Род занятий:
Возраст:

#7919   2019-05-04 17:39 GMT+3 часа(ов)      
Доброго времени.

Имеется: индексированный png с картой цветов.

Задача: получить первый цвет с карты через script-fu в gimp и выделить его на изображении.

Попытки:
 
(define (get-one-color img dr)
(let *
(
(color (cadr (gimp-image-get-colormap img)))
)
(gimp-image-select-color img 0 dr color)
(gimp-displays-flush)
)
)
 
(script-fu-register "get-one-color"
_"<Toolbox>/Xtns/Get one color"
"Get one color indexed PNG."
"Khull-Khuum"
"Khull-Khuum"
"2019"
"INDEXED*"
SF-IMAGE "Image to use" 0
SF-DRAWABLE "Drawable to use" 0
)
 

Результат: жалобы на переменную цвета как неподходящую по типу.

Вопрос: как разрешить эту проблему и всё-таки получить первый цвет.

отредактировал(а) Khull-Khuum: 2019-05-04 17:55 GMT+3 часа(ов)

NuINu

Members


Статус

1 сообщений

Где: Russia
Род занятий:
Возраст:

#7920   2019-05-09 00:47 GMT+3 часа(ов)      
вообщем вы сделали почти все правильно. вот только цвет возвращаемый (cadr (gimp-image-get-colormap img)) это массив байтов. а вам надо указать конкретный цвет, т.е список из 3 чисел, которые соответствуют первым трем элементам(для 0-го индекса) в полученном массиве. вот например функция которая делает это.

получили массив байтов, для изображения №3

 
(define t1 (cadr (gimp-image-get-colormap 3)))
(vector? t1) ;;#t
 


функция которая из массива создает список- цвет задаваемый индексом col.
 
(define (get-col-from-vect v col)
(let* ((ind (* col 3)))
(list (vector-ref v ind)
(vector-ref v (+ ind 1))
(vector-ref v (+ ind 2)))))
 


это аналог вашей функции:
 
(define (get-one-color img col)
(let* ((layer (car (gimp-image-active-drawable img)) ))
(gimp-image-select-color img CHANNEL-OP-ADD layer col)
(gimp-displays-flush)
))
 


вот так вот создается выделение в 3-ем изображении для 19 го индекса:
(get-one-color 3 (get-col-from-vect t1 19))
для нулевого
(get-one-color 3 (get-col-from-vect t1 0))

Khull-Khuum

Members


Статус

2 сообщений

Где: Russia
Род занятий:
Возраст:

#7921   2019-05-11 02:48 GMT+3 часа(ов)      
Всё верно, с преобразователем заработало.
Спасибо!
> 1 <


Онлайн :

0 пользователь(ей), 35 гость(ей) :




Реклама на сайте: