A geração de miniaturas com imagemagick não renderiza as cores corretas

4

A geração de miniaturas de PDFs com imagemagick às vezes renderiza cores incorretas. Estamos usando uma versão antiga do imagemagick (6.5.7-8, que é a versão instalada nos servidores heroku). Aqui está o comando que estamos usando atualmente:

convert \
  -size "725x1200>" \
  -colorspace RGB \
  -flatten \
  -density 300 \
  -quality 100 \
   input.pdf \
   output.jpg

Eu tentei usar diferentes espaços de cores como sRGB, YIQ, .. mas nenhum deles está renderizando a cor corretamente.

Usando o imagemagick-6.7.7-6 funciona localmente, então eu tentei empacotar o comando 'convert' dentro do meu diretório application / bin, o comando funciona, mas o resultado ainda está errado, então parece que o problema vem ou de outro comando imagemagick usado por 'converter' ou de outra biblioteca.

Veja um exemplo das saídas:

  • Saída correta: à esquerda
  • Saída errada: à direita

Estranhamente, com algumas páginas do mesmo pdf, a saída está sempre correta. Alguma idéia de qual biblioteca ou comando poderia ser o problema, ou se há um conjunto adequado de opções para passar para o imagemagick para sempre acertar?

    
por Bastien 05.07.2012 / 15:48

1 resposta

2

Após mais algumas investigações, parece que o problema vem do ghostscript, que está faltando a opção -dUseCIEColor . E pelo que eu juntei na web, não é possível passar parâmetros para o ghostscript através do imagemagick. O que é possível, no entanto, é chamar os dois comandos juntos com um canal: link

Meu caso de uso específico

Isso é um pouco mais específico do meu caso de uso, mas achei que alguém poderia estar interessado. Como estamos gerando miniaturas via Paperclip em nosso aplicativo de trilhos, eu criei um novo processador de clipe de papel para cuidar da conversão de pdf para jpg e, em seguida, imagemagick assume para fazer o redimensionamento usual. Meu código com um exemplo aqui: link

    
por 06.07.2012 / 12:07