ruby - Dragonfly - Força a conversão de CMYK para RGB ao fazer miniaturas
-
14-11-2019 - |
Pergunta
Estou usando um cms bastante bom (locomotiva(GitHub)) para permitir que alguns usuários não experientes em tecnologia carreguem imagens no sistema.O programa é capaz de redimensionar e cortar imagens em qualquer tamanho.
O problema é que o Internet Explorer não sabe como lidar com imagens codificadas em CMYK.Os usuários deste aplicativo não são exatamente conhecedores de tecnologia;pedir-lhes que transformem suas imagens de CMYK para RGB não é uma opção.Gostaria de modificar a locomotiva para que ela faça a mudança automaticamente.Estou tentando isso há algumas horas, mas não tive sorte até agora.
Isto é o que eu encontrei:
- Usos de locomotivas libélula para realizar o redimensionamento.
- Concretamente, utiliza libélulas imagemagick módulo.
- O arquivo que define como o Dragonfly é usado na locomotiva pode ser encontrado aqui.
- Há também uma libélula arquivo inicializador.
Eu também descobri que o que (acho) que preciso é adicionar um -colorspace RGB
opção ao parâmetro enviado ao Imagemagick pelo Dragonfly.Não parece que o Dragonfly ofereça uma opção fácil para fazer isso.
Eu tentei várias coisas, a última consistindo em monkeypatching Processador Imagemagick da Dragonfly para que o -colorspace RGB
opção é sempre usada.Eu adicionei isso na locomotiva config/initializers/dragonfly.rb
:
# locomotive's config/initializers/dragonfly.rb
# ... Locomotive's default initialization
module Dragonfly
module ImageMagick
class Processor
alias :old_convert :convert
def convert(temp_object, args='', format=nil)
args += ' -colorspace RGB' # force RGB in all thumbnails
old_convert(temp_object, args, format)
end
end
end
end
Eu tinha certeza de que isso deveria funcionar, mas infelizmente não funciona.E fiquei sem ideias.Alguém pode ajudar?
Solução 3
Infelizmente não parece haver uma maneira simples de fazer isso com o Dragonfly.Eu desisti.
Outras dicas
Na linha de comando, às vezes preciso adicionar -type truecolor
para fazer com que as conversões de espaço de cores funcionem de maneira confiável:
convert cmyk.jpeg -colorspace rgb -type truecolor rgb.jpeg
Talvez você tente adicioná-lo em seu código também?
Da lista relacionada à direita, esta resposta do SO pode ajudar?