Lorsqu'un utilisateur télécharge une image avec paperclip, je la traite avec le modèle suivant :
class Picture < ActiveRecord::Base
has_attached_file :pic, :styles => { :small => "100x100>" }, :whiny => true
after_save :save_geometry
def save_geometry
unless @geometry_saved
self.original_geometry = get_geometry(:original)
self.small_geometry = get_geometry(:small)
@geometry_saved = true
self.save
end
end
def get_geometry(style = :original)
begin
Paperclip::Geometry.from_file(pic.path(style)).to_s
rescue
nil
end
end
end
El get_geometry
appelle la fonction ImageMagick identify
pour trouver la géométrie de vos images originales et redimensionnées.
Je mets les résultats en cache dans un champ de la base de données. Par exemple, si j'ai téléchargé une image qui était 1024x768
mes champs en cache contiendraient :
original_geometry = "1024x768"
small_geometry = "100x75"