我有一个rails应用程序,用户可以上传图片。在他们上传一张图片后,我需要在图片上加上一个遮罩,这样部分就会透明。这可能吗?
最佳答案
Rmagick(一个Ruby图像处理库)允许您对对象应用剪辑路径: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')
编辑:
如果需要应用透明背景,最简单的方法应该是裁剪图像,然后使用
Image#composite!
方法添加trnasparent层。