Attachment_fu, Watermarks and after_save

Hi, I'm having an issue with trying to watermark an uploaded image using attachment_fu and Rails 2.0.2.

The model looks like...

class Picture < ActiveRecord::Base   belongs_to :gallery   after_save :watermark_image

  has_attachment :content_type => :image,                   :storage => :file_system,                   :max_size => 2.megabytes,                   :resize_to => '500x500',                   :processor => "Rmagick",                   :thumbnails => {                     :large => '128x128>',                     :small => '64x64>'                   }   validates_as_attachment

  def watermark_image     dst = Magick::Image.read("#{RAILS_ROOT}/ public#{self.public_filename}").first     src = Magick::Image.read("#{RAILS_ROOT}/config/Logo.png").first     result = dst.composite(src, Magick::SouthEastGravity, Magick::OverCompositeOp)     result.write("#{RAILS_ROOT}/public#{self.public_filename}")   end end

The code fails with a 'Cannot read image' on the 'dst = ...' line of the watermark_image method.

Looks like the file does not actually exist in the file system until after 'after_save'?

removing the 'after_save' and all works, except of course no watermark..

Anyone have an ideas on how to achieve this?

thanks in advance...

kevin evans wrote:

Hi,

Anyone have an ideas on how to achieve this?

thanks in advance...

Besides public_filename there are other methods within the Attachment_fu' modified model that you can get at.. I don't remember off the top of my head what it's name is but you can do the following to find out

script/console

Picture.instance_methods.grep /path/

One of those methods should get you an absolute path in which your after_save filter should work..

I haven't done this myself (other than using the alternate path methods) and it's only the path I would take myself..

hth

ilan

I have the exact same code as you do, and it works pefectly.

Actually, I also have 'unless self.thumbnail?' at the beginning of that code block because I was getting my fullsize logo on top of my thumbnails as well, but that's a different story.

I would check your paths to make sure that things are where you expect them. 'after save' is, well, after the record/file is saved, so I would look elsewhere for your problem. When you're looking at the error page, are you 1000% sure that the path shown for the error page exists and is valid?