Como passar opções de conversão adicionais para o papel de papel no Heroku?
-
20-09-2019 - |
Pergunta
class User < ActiveRecord::Base
has_attached_file :photo, :styles => { :square => "100%", :large => "100%" },
:convert_options => {
:square => "-auto-orient -geometry 70X70#",
:large => "-auto-orient -geometry X300" },
:storage => :s3,
:s3_credentials => "#{RAILS_ROOT}/config/s3.yml",
:path => ":attachment/:id/:style.:extension",
:bucket => 'mybucket'
validates_attachment_size :photo,
:less_than => 5.megabyte
end
Funciona muito bem na máquina local, mas me dá um erro no Heroku: There was an error processing the thumbnail for stream.20143
O problema é que eu quero fotos de orientação automática antes de redimensionar, para que eles redimensionassem corretamente.
A única variante de trabalho agora (graças a Jonnii) é redimensionada sem orientação automática:
...
as_attached_file :photo, :styles => { :square => "70X70#", :large => "X300" },
:storage => :s3,
:s3_credentials => "#{RAILS_ROOT}/config/s3.yml",
:path => ":attachment/:id/:style.:extension",
:bucket => 'mybucket'
...
Como passar opções de conversão adicionais para o papel de papel no Heroku?
Up
Descobri, o problema na opção "-auto-oriental". Parece que essa opção está quebrada na versão do ImageMagick usada por Heroku. Criei o processador de imagem de papel de papel personalizado herdado da miniatura padrão do PaperClip:
module Paperclip
class Ao < Thumbnail
def transformation_command
super + " -auto-orient"
end
end
end
Funciona perfeito na máquina local, mas falha no Heroku.
Solução
Estes são os tamanhos que eu uso. Todos eles funcionam bem no Heroku:
SIZES = {
:original => "640x480>",
:thumb => "150x150#",
:mini => "60x60#",
:micro => "30x30#"
}
Certifique -se de sua versão GEM de clipe de papel é o mesmo que o de Heroku. Você pode especificar a versão específica do GEM em seu .gems
arquivo e em seu environment.rb
para garantir que eles se alinhem.
Não sei exatamente por que o seu convert_options
estão causando problemas, mas, se bem me lembro, o PaperClip usa o ImagesCience diretamente e as opções escolhidas podem ser incompatíveis com o sistema de arquivos Heroku.
Se isso for crítico e você precisar de uma resposta agora, eu aumentará uma passagem de suporte no Heroku. Se você receber uma resposta, poste -o de volta aqui!