Можно ли наложить маску на изображение с помощью Ruby? - PullRequest
3 голосов
/ 26 января 2012

У меня есть приложение Rails, где пользователи могут загружать изображения. После того, как они загрузят изображение, мне нужно наложить маску на это изображение, чтобы его части стали прозрачными. Возможно ли это?

1 Ответ

5 голосов
/ 26 января 2012

RMagick (библиотека для работы с изображениями Ruby) позволяет применять обтравочный контур к объектам: http://www.imagemagick.org/RMagick/doc/rvgclip.html

В основном вам нужно:

  • создать экземпляр обтравочного контура
  • используйте API рисования, чтобы нарисовать маску
  • применить путь к вашему изображению

Нажав на изображение замочной скважины ", там появляется пример того, как этого добиться:

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')

РЕДАКТИРОВАТЬ:

Если вам нужно применить прозрачный фон, самый простой способ - обрезать изображение, а затем использовать метод Image#composite!, чтобы добавить прозрачный слой.

...