Last Updated: February 25, 2016
·
2.658K
· joren

Carrierwave image quality

Carierwave is an awesome gem to manage your uploads. It is pure Ruby, so it isn’t strangled in Rails or ActiveRecord. It is easy configurable, but I missed one option.

It doesn’t support to change the quality of your uploade images. But if you use RMagick or MiniMagick, you can use this snippet.

# rails carrierwave initializer that gives you a quality option in your uploader. use:
#  version :medium do
#    process :resize_to_fit => [640, 480]
#    process :quality => 95
#  end

module CarrierWave
  module MiniMagick
    def quality(percentage)
      manipulate! do |img|
        img.write(current_path){ self.quality(percentage) }
        img = yield(img) if block_given?
        img
      end
    end
  end
end

If you are using RMmagick, just replace self.quality(percentage) with self.quality = percentage. With thanks to matwiemann for sharing this solution