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
Vous devez vous connecter pour publier un commentaire.
Simplement utiliser trombone ou attachment_fu
Vous pouvez la redimensionner avec RMagick gem.
C'est juste un exemple que vous pouvez adapter:
Plus d'Infos ici: http://www.imagemagick.org/script/api.php#ruby
J'ai essayé de la manière suivante. Son travail très bien.
J'espère que ça aidera certains.
1.ajouter après le joyau dans le Gemfile:
2.bundle
3.utilisez cette fonction de contrôleur:
Sachant que c'est un ancien, mais ici, c'est une très belle railscast, conformément à ce sujet: http://railscasts.com/episodes/253-carrierwave-file-uploads
C'est à l'aide de rmagic et carrierwave.
Il est un joyau appelé "Refile". Il est grand. Aller de l'avant et de vérifier ce tutoriel sur la façon de l'utiliser.
https://gorails.com/episodes/file-uploads-with-refile
voici comment le faire.
Ajouter ceci à votre fichier gem
Créer un champ de table à l'aide de rails de la migration de votre table comme image_id de type chaîne de caractères.Vient maintenant comment insérer dans ce domaine et afficher l'image.
L'utiliser dans votre formulaire d'upload, en grande partie form_for do |f|
si vous êtes à l'aide de rails 4 assurez-vous que vous passez des rails solides paramètres.
Mettre ceci dans votre modèle.rb fichier où vous stockez l'image (ci-dessous classe modelname)
l'affichage de l'image est simple.