在导轨

时间:2018-05-03 15:13:15

标签: ruby-on-rails ruby imagemagick carrierwave minimagick

我正在使用carrierwave上传图片。现在我想要优化图像。就像用户上传任何尺寸的图像一样,我希望以200kb以下的尺寸优化该图像。

为此我添加mini-magick gem。 这是我的代码

version :listing_main do
  image = ::MiniMagick::Image::read(File.binread(@file.file))
  // Want to compress image here      
  resize_to_fill 800,600
end

问题是我如何压缩图像,找不到任何方法和教程

1 个答案:

答案 0 :(得分:2)

使用Mini Magick和CarrierWave改变图像质量很简单。

首先,转到文件:config/initializers/carrierwave.rb。如果不存在,请创建一个。把代码放在:

module CarrierWave
    module MiniMagick
        def quality(percentage)
            manipulate! do |img|
                img.quality(percentage.to_s)
                img = yield(img) if block_given?
                img
            end
        end
    end
end

之后,转到image_uploader文件。就我而言,它位于app/uploaders/image_uploader.rb

version :listing_main do    
    process resize_to_fill: [800, 600]
    process :quality => 70
end

我正好使用这段代码而且效果很好。