Marcio Trindade

Crop on top with Paperclip

Estou com alguns projetos que utilizam paperclip para fazer o upload e gerar um thumnail de um arquivo. Mas o grande problema que os clientes sempre acabam reclamando é quando eles fazem o upload de uma foto na vertical o crop automático acaba cortando o rosto das pessoas.

Então o @sadow11 dando uma analisada no paperclip acabou alterando o plugin para que quando for fazer o crop usar sempre a parte de cima da imagem. O resultado ficou bom e resolveu 90% dos problemas. Com uma linha de código tivemos um cliente feliz.

Caso alguém tenha interesse, ai vai o método que alteramos:

paperclip.rb
def cropping(dst, ratio, scale)
  if ratio.horizontal? || ratio.square?
    "%dx%d+%d+%d" % [ dst.width, dst.height, 0, 0 ]
  else
    "%dx%d+%d+%d" % [ dst.width, dst.height, (self.width * scale - dst.width) / 2, 0 ]
  end
end

Se decidir usar em um projeto onde já tenha imagens geradas, basta rodar o refresh do paperclip para que ele refaça todos os crops agora com a parte superior das imagens.

console
rake paperclip:refresh class=NomeDoModel