How can I resize a Paperclip image after it has been added to the database?

mculp picture mculp · Oct 15, 2009 · Viewed 7k times · Source

I've added 2000 pictures to my images table and I'm using the Paperclip plugin to create thumbs. I'm wondering if there's a way to go through the database and add another :styles element.

For example, when I added the images I had the following in my model:

has_attached_file :image, :styles => { :medium => "300x300>", :thumb => "100x100>" }

However, now I want to add a :large attribute and have it applied to every image that's already in my table. Something like:

has_attached_file :image, :styles => { :large => "800x800>", :medium => "300x300>", :thumb => "100x100>" }

Is this possible? Or would I have to re-add all 2000 pictures?

Answer

Jonathon Horsman picture Jonathon Horsman · Mar 18, 2010

If Paperclip is installed as a plugin, you can do this:

rake paperclip:refresh:thumbnails CLASS=Screenshot

where Screenshot is the name of the class with the attachment.

If it's installed as a gem, do this inside script/console:

Screenshot.all.each {|s| s.image.reprocess! }

replacing Screenshot with the appropriate class name