Basic image resizing in Ruby on Rails

前端 未结 5 1744
不思量自难忘°
不思量自难忘° 2020-12-06 01:45

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

相关标签:
5条回答
  • 2020-12-06 02:02

    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

    0 讨论(0)
  • 2020-12-06 02:10

    Simply use paperclip or attachment_fu

    0 讨论(0)
  • 2020-12-06 02:10

    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.

    0 讨论(0)
  • 2020-12-06 02:16

    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") %>
    
    0 讨论(0)
  • 2020-12-06 02:19

    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)
    
    0 讨论(0)
提交回复
热议问题