У меня есть приложение Rails, где пользователи могут загружать изображения. После загрузки изображения мне нужно наложить маску на это изображение, поэтому части его станут прозрачными. Это возможно?Могу ли я наложить маску на изображение с помощью Ruby?
3
A
ответ
5
RMagick (рубин манипуляции библиотеки изображений) позволяет применять отсечения путь на объектах: http://www.imagemagick.org/RMagick/doc/rvgclip.html
В принципе, вам нужно:
- создать экземпляр вырезка путь
- использовать рисунок API, чтобы нарисовать вашу маску
- применить путь к изображению
Щелчок на замочной изображение»there выскакивает пример того, как достичь этого:
require 'rvg/rvg'
hat = Magick::Image.read('images/Flower_Hat.jpg').first
rvg = Magick::RVG.new(hat.columns, hat.rows) do |canvas|
keyhole = Magick::RVG::ClipPath.new do |path|
path.circle(60, canvas.width/2, 80)
path.polygon(canvas.width/2-10, 60, 40, 230, 160, 230, canvas.width/2+10, 60)
end
canvas.image(hat, nil, nil, 20, 20).styles(:clip_path=>keyhole)
end
rvg.draw.write('rvg_clippath.gif')
EDIT:
Если вам нужно применить прозрачный фон простой подход должен обрезать затем используйте метод Image#composite!
для добавления слоя trnasparent.
Это выглядит как отличный пример! Думаю, мне не хватает знания терминологии. Но кажется, что обтравочные маски не поддерживают полупрозрачность. Могу я тоже это сделать? Например, используя слой маски, созданный в Photoshop? –
Отредактировано мое сообщение. – Jef
Пример обрезки/композиции здесь: http://weare.buildingsky.net/2006/10/18/render-greatlooking-collages-with-ruby-and-rmagick – Jef