Search code examples
ruby-on-railsrubyrmagick

Overlay not showing


I am trying to overlay a png of a signature(has a transparent background) onto a png of my form. When I try to composite the two images and render the output only the form png and my annotations are shown. I can render out any of the various images by changing the send_data so I know that the Images are there.

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

Update: I created a completely transparent Gif to mimick the form I was attempting to overlay. The Signature shows up. Which led me to try different Operators turns out I should have used Magick::OverCompositeOp instead of OverlayCompositeOp


Solution

  • I should have used Magick::OverCompositeOp instead of MagickOverlayCompositeOp