title: watermark with paperclip
body: <p>according to this example (http://dimaspriyanto.com/2010/06/08/image-watermarking-with-paperclip/), I try to put a watermark on every picture I upload (for now, I restrain myself to the large one).</p>
  
  <p>And guess what? It doesn't work!</p>
  
  <p>So in my picture model, I have </p>
  
  <pre><code>require 'paperclip_processors/watermark'
    has_attached_file :image,
                    :styles =&gt; {:medium =&gt; "300x300^", :thumb =&gt; "150x105^",
                        :large =&gt; {
                            :geometry =&gt; "460",
                            :watermark_path =&gt; ":rails_root/public/images/watermark.png"
                        }
                    },
                    :url =&gt; "/images/:style/:id_:style.:extension",
                    :path =&gt; ":rails_root/public/images/:style/:id_:style.:extension"
  </code></pre>
  
  <p>and in /lib/paperclip_processors/watermark.rb, I have:</p>
  
  <pre><code>module Paperclip
    class Watermark &lt; Processor
  
      attr_accessor :current_geometry, :target_geometry, :format, :whiny, :convert_options, :watermark_path, :overlay, :position
  
      def initialize file, options = {}, attachment = nil
         super
         geometry          = options[:geometry]
         @file             = file
         @crop             = geometry[-1,1] == '#'
         @target_geometry  = Geometry.parse geometry
         @current_geometry = Geometry.from_file @file
         @convert_options  = options[:convert_options]
         @whiny            = options[:whiny].nil? ? true : options[:whiny]
         @format           = options[:format]
         @watermark_path   = options[:watermark_path]
         @position         = options[:position].nil? ? "SouthEast" : options[:position]
         @overlay          = options[:overlay].nil? ? true : false
         @current_format   = File.extname(@file.path)
         @basename         = File.basename(@file.path, @current_format)
       end
  
        def crop?
          @crop
        end
  
        def convert_options?
          not @convert_options.blank?
        end
  
        def make
          dst = Tempfile.new([@basename, @format].compact.join("."))
          dst.binmode
  
          if watermark_path
            command = "composite"
            params = "-gravity #{@position} #{watermark_path} #{fromfile} #{transformation_command} #{tofile(dst)}"
          else
            command = "convert"
            params = "#{fromfile} #{transformation_command} #{tofile(dst)}"
          end
  
          begin
            success = Paperclip.run(command, params)
          rescue PaperclipCommandLineError
            raise PaperclipError, "There was an error processing the watermark for #{@basename}" if @whiny
          end
  
          dst
        end
  
        def fromfile
          "\"#{ File.expand_path(@file.path) }[0]\""
        end
  
        def tofile(destination)
          "\"#{ File.expand_path(destination.path) }[0]\""
        end    
  
        def transformation_command
          scale, crop = @current_geometry.transformation_to(@target_geometry, crop?)
          trans = "-resize \"#{scale}\""
          trans &lt;&lt; " -crop \"#{crop}\" +repage" if crop
          trans &lt;&lt; " #{convert_options}" if convert_options?
          trans
        end
  
    end
  
  end
  </code></pre>
  
  <p>The watermark is in /public/images/ and it doesn't crash in the process, I mean the pictures are uploaded, in every size but the large one is nude, without the watermark.</p>
  
  <p>Any idea?</p>