Search code examples
ruby-on-railsrails-activestorage

Rails ActiveStorage strip image EXIF data


Is there an easy way to strip all the EXIF data in every Image upload? Maybe in an before_save hook?


Solution

  • based on iGian's comment I ended up with this code:

    before_save :strip_exif_data
    
    private
    
    def strip_exif_data
      return unless image.attached?
      filename = image.filename.to_s
      attachment_path = "#{Dir.tmpdir}/#{image.filename}"
      File.open(attachment_path, 'wb') do |file|
        file.write(image.download)
        file.close
      end
      mm_image = MiniMagick::Image.open(attachment_path)
      mm_image.strip
      mm_image.write attachment_path
      image.attach(io: File.open(attachment_path), filename: filename)
    end