叠加没有显示

时间:2015-06-02 19:18:18

标签: ruby-on-rails ruby rmagick

我正在尝试将png的签名(具有透明背景)覆盖到我的表单的png上。当我尝试合成两个图像并渲染输出时,只显示表单png和我的注释。我可以通过更改send_data来渲染任何各种图像,因此我知道图像就在那里。

def index
    img = Magick::Image.read('public/form_template.png').first
    form = Magick::Draw.new
    form.annotate(img,300,400,90,30,"Test") do
      self.font = 'Helvetica'
      self.pointsize = 50
      self.font_weight = Magick::BoldWeight
      self.fill = 'Black'
      self.gravity = Magick::NorthWestGravity
    end

    form.annotate(img,300,400,2000,30,"1234567890") do
      self.font = 'Helvetica'
      self.pointsize = 50
      self.font_weight = Magick::BoldWeight
      self.fill = 'Black'
      self.gravity = Magick::NorthWestGravity
    end
    sig = Magick::Image.read("public/uploads/signature.png").first
    sig.trim
    sig_finished = sig.resize(175,50)
    finished_form = img.composite(sig_finished,Magick::EastGravity,Magick::OverlayCompositeOp)
    send_data finished_form.to_blob, :stream=>"false",
    :filename=>'test.png',:type=>'image/png',
    :disposition=>'inline'    
  end

更新:我创建了一个完全透明的Gif来模仿我试图叠加的表单。签名出现了。这导致我尝试不同的操作员结果我应该使用Magick::OverCompositeOp而不是OverlayCompositeOp

1 个答案:

答案 0 :(得分:0)

我应该使用Magick :: OverCompositeOp而不是MagickOverlayCompositeOp