Использование 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

Другие вопросы по тегам