I\'m creating a little photo sharing site for our home\'s intranet, and I have an upload feature, which uploads the photo at original size into the database. However, I also
You can resize with RMagick gem.
This is just a example that you can adapt:
require 'RMagick'
f = File.new( File.join(save_path, self.filename), "wb" )
f.write form_file.read #remeber to set :html=>{:multipart => true} in form
f.close
image = Magick::Image.read(self.filename).first
image.change_geometry!("640x480") { |cols, rows, img|
newimg = img.resize(cols, rows)
newimg.write("newfilename.jpg")
}
More Info here: http://www.imagemagick.org/script/api.php#ruby
Simply use paperclip or attachment_fu
Knowing this is an old one, but here is a very nice railscast according to this topic: http://railscasts.com/episodes/253-carrierwave-file-uploads It is using rmagic and carrierwave.
There is a gem called "Refile". It is great. Go ahead and check this tutorial on how to use it. https://gorails.com/episodes/file-uploads-with-refile here is how to do it.
Add this to your gem file
gem 'refile', '~> 0.4.2', require: ["refile/rails", "refile/image_processing"]
Create a table field using rails migration in your table as image_id of string type.Now comes how to insert into that field and display the image.
Use this in your upload form, largely form_for do |f|
<%= f.attachment_field :image %>
if you are using rails 4 make sure you pass rails strong parameters.
Put this in your model.rb file where you are storing the image (below class modelname)
attachment :image
displaying the image is simple.
<%= image_tag attachment_url(current_user,:image, :fill, 200, 170, format: "jpg") %>
I tried following way. Its working fine. I hope it will help to some one.
1.add following gem in Gemfile:
gem "ImageResize", "~> 0.0.5"
2.run bundle
3.use this in controller function:
require 'rubygems'
require 'ImageResize'
#input_image_filename, output_image_filename, max_width, max_height
Image.resize('big.jpg', 'small.jpg', 40, 40)