Использование rmagick для раскрашивания изображения, как в фотошопе
Итак, у меня есть это базовое изображение:
А в фотошопе я делаю базовое наложение цвета слоя с помощью цветов RGB:
r: 244, g: 93, b: 0
Это дает мне удивительно живой:
Я пытаюсь раскрасить одно и то же изображение в rmagick, поэтому, если я сделаю следующее раскрасить:
img = Magick::Image.read('brush.png').first
img = img.colorize(100, 100, 100, Magick::Pixel.new(244, 93, 0, 1))
img.format = 'png'
img.to_blob
Это дает мне действительно размытое оранжевое изображение:
Мои вопросы: как мне раскрасить это изображение с помощью тех параметров rgb в imagemagick / rmagick, чтобы получить тот же яркий цвет, который я получил в фотошопе.
Благодарю.
2 ответа
В командной строке, я думаю, вы хотите что-то вроде этого:
convert brush.png \( +clone -fill "rgb(244,93,0)" -colorize 100% \) -compose colorize -composite out.png
Итак, с +clone
Я создаю еще один слой того же размера, что и ваше изображение, и полностью заполняю его на 100% оранжевым цветом, а затем налагаю на ваше изображение с помощью -composite
смешать непрозрачность и цвет.
Я действительно не говорю на Ruby, но думаю, что это будет так:
#!/usr/bin/ruby
require 'RMagick'
include Magick
infile=ARGV[0]
img=Magick::Image.read(infile).first
w=img.columns
h=img.rows
ovl=Image.new(w,h){self.background_color=Magick::Pixel.new(244*256,93*256,0)}
img.composite!(ovl,0,0,Magick::ColorizeCompositeOp)
img.write('result.png')
Командная строка Марка Сетчелла работает для меня (Windows), с небольшими изменениями...
convert greyscale.png +clone -fill "rgb(244,93,0)" -colorize 100% -compose colorize -composite colour.png
Нашел эту ссылку при перекрашивании с помощью rmagick... ftp://belagro.com/Redmine/ruby/lib/ruby/gems/1.8/gems/rmagick-2.12.0/doc/colorize.rb.html
На основе кода в приведенной выше ссылке с удаленным преобразованием серой шкалы работает ли приведенный ниже пример (у меня нет ruby)?
# load the greyscale image
img = Magick::Image.read('greyscale.png').first
# Colorize with a 100% blend of the orange color
colorized = img.colorize(1, 1, 1, '#A50026')
# save the colour image
colorized.write('colour.png')
Использовал палитру цветов, чтобы получить гекс вашего оранжевого цвета - rgb(244,93,0)
знак равно #A50026