Сдвиг оттенка на существующих изображениях с помощью imagemagick -modulate из значений Photoshop Hue/Saturation
Я пытаюсь изменить оттенок этого изображения (и других подобных ему) с различными градиентами и т. Д. От "синего" до другого цвета, как определено моим дизайнером, из макетов, сделанных в Photoshop.
Я добавил 2 экрана Hue/Saturation из Photoshop со значениями HSL для фиолетового и оранжевого, но с помощью -modulate в Imagemagick через этот код рубина:
# burnt orange - works
hue = 25.0 # must be a decimal
sat = 100
bri = 0
# purple - does not work
#hue = 266.0 # must be a decimal
#sat = 100
#bri = 0
# formula from -modulate http://www.imagemagick.org/Usage/color_mods/#modulate
h = ( hue * 100/180 ) + 100
system("convert -define modulate:colorspace=HSB home_tab_back_right.png -modulate #{h},#{sat},#{bri} #{h}-#{sat}-#{bri}-home_tab_back_right.png")
Это будет работать для сожженного оранжевого изображения, но не для фиолетового и других цветов, которые мне дали.
Я добился большего успеха, передав "modulate:colorspace=HSB", чем без него, но все еще не смог последовательно добавить значения, полученные из Photoshop, и заставить его взять базовое синее изображение и сместить оттенок.
Можно ли это сделать?
1 ответ
Я заметил ошибку в приведенном выше коде. Опция "-modulate" ImageMagick ожидает числа в следующем порядке: $ яркость, $ насыщенность, $ оттенок.
Мне нужно было превратить изображения "original.png" во вложенных папках из исходного синего цвета в красный и зеленый версии.
Вот что я использовал для красного:
for dir in *; do convert -define modulate:colorspace=HSB $dir/original.png -modulate 100,100,180 $dir/original_red.png; done;
Вот что я использовал для Грина:
for dir in *; do convert -define modulate:colorspace=HSB $dir/original.png -modulate 100,100,270 $dir/original_green.png; done;
Обратите внимание, что выше я сохранил яркость и насыщенность такими же, как и в оригинале (100), и настроил оттенок (180 для синего> красного и 270 для зеленого> красного).
Надеюсь, что это полезно!