Redimensionnement d'image de base dans Ruby on Rails

Je me suis créer un petit site de partage de photos pour notre accueil de l'intranet, et j'ai une fonction de téléchargement, téléchargements, la photo en taille originale dans la base de données. Cependant, je tiens également à enregistrer la photo dans quatre autres tailles: W=1024, W=512, W=256 et W=128, mais uniquement les tailles plus petites que la taille d'origine (par exemple, si la largeur d'origine est de 511, seulement générer 256 et 128). L'image avec une largeur de 128 doit toujours être généré (parce que c'est une miniature). Aussi, le resization devrait toujours être avec une proportionnelle de la largeur et de la hauteur. Comment puis-je mettre en œuvre?
J'ai déjà ce code pour télécharger la photo:

pic.rb <-- modèle

def image_file=(input_data)
  self.filename     = input_data.original_filename
  self.content_type = input_data.content_type.chomp
  self.binary_data  = input_data.read
  # here it should generate the smaller sizes
  #+and save them to self.binary_data_1024, etc...
end

nouveau.rb <-- vue

<h1>New pic</h1>

<% form_for(@pic, :html => {:multipart => true}) do |f| %>
  <%= f.error_messages %>

  <p>
    <%= f.label :title %><br />
    <%= f.text_field :title %>
  </p>
  <p>
    <%= f.label :description %><br />
    <%= f.text_field :description %>
  </p>
  <p>
    <%= f.label :image_file %><br />
    <%= f.file_field :image_file %>
  </p>
  <p>
    <%= f.submit 'Create' %>
  </p>
<% end %>

<%= link_to 'Back', pics_path %>

Grâce

source d'informationauteur