Использование 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, чтобы получить тот же яркий цвет, который я получил в фотошопе.

Спасибо.


person MintDeparture    schedule 04.04.2015    source источник


Ответы (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')
person Mark Setchell    schedule 05.04.2015
comment
Большое спасибо за это! ... Но я хочу сделать это в rmagick, не знаю, как сделать преобразование в ruby. Также это не совсем правильно, посмотрите, как «пятна» по краю не белые, а тусклые и серые. Яркий белый цвет тоже очень важен. Я ценю помощь. - person MintDeparture; 05.04.2015
comment
Какая версия imagemagick у вас установлена? Это может иметь значение. - person MintDeparture; 14.04.2015

У меня работает командная строка Марка Сетчелла (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

person TechSpud    schedule 13.04.2015