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!
, чтобы добавить прозрачный слой.