加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – 将一个图像合成另一个图像时,RMagick透明度不起作用

发布时间:2020-12-17 02:18:49 所属栏目:百科 来源:网络整理
导读:在下面的代码中,我试图在一些山脉的图像上覆盖一个透明的方块.我认为它会起作用,但通过设置background_color =’none’它不会使图像透明! 结果是左上角有一个黑色方块 – 所需的结果是黑色方块应该是透明的. require 'open-uri'require 'RMagick'image_url
在下面的代码中,我试图在一些山脉的图像上覆盖一个透明的方块.我认为它会起作用,但通过设置background_color =’none’它不会使图像透明!

结果是左上角有一个黑色方块 – 所需的结果是黑色方块应该是透明的.

require 'open-uri'
require 'RMagick'

image_url = 'http://farm9.staticflickr.com/8446/7937080514_62d7749860.jpg'

bg = Magick::ImageList.new
open(image_url,'rb') do |f|
  bg.from_blob(f.read)
end

layer = Magick::Image.new(200,200) {
  self.background_color = 'none'
}

bg.each do |frame|
  frame.composite!(layer,Magick::OverCompositeOp)
  frame.strip!
end

bg.write('out.jpg')

这是我的输出图像:

编辑:我在Mac,Lion,ruby 1.9.3p125,ImageMagick 6.7.5-7

编辑2:这在Heroku上工作正常!但不是在我的机器上. Heroku具有相同版本的ImageMagick.奇怪:|

解决方法

出于某种原因,layer.alpha? == false.所以我做了sq.alpha(Magick :: ActivateAlphaChannel)然后它工作了!

参考:http://www.imagemagick.org/RMagick/doc/image1.html#alpha

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读