Impedir a rotação automática de imagens enviadas

Os navegadores Ipad e iphone safari tentam ser inteligentes e girar as imagens de acordo com o valor da propriedade exif: Orientation. Em casos gerais, não queremos isso.

Cenário

A maneira mais fácil é usar o utilitário de linha de comando jhead :

$ jhead -norot <path to file>

Do manual do jhead:
ruby -norot Zero out the rotation tag. This to avoid some browsers from rotating the image again after you rotated it but neglected to clear the rotation tag

Se você usa rubi e gema de clipe de papel, aqui está a solução pronta:

module Paperclip
class NoRotation < Processor
def make
command
= "jhead"
params
= %W[-norot #{abs_path_to_file(@file)}]

begin
Paperclip.run(command, params.join(' '))
rescue ArgumentError, Cocaine::CommandLineError
raise
Paperclip::Error, "There was an error removing rotation for #{@basename}"
end

@file
end

def abs_path_to_file(destination)
File.expand_path(destination.path)
end
end
end

E no modelo aplique o processador:

has_attached_file :picture, processors: [:no_rotation]