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

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

Gerando miniaturas de PDFs com imagemagickàs vezesrenderiza 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

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

Usar o imagemagick-6.7.7-6 funciona localmente, então tentei agrupar o comando 'convert' no diretório /bin do meu aplicativo, o comando funciona, mas o resultado ainda está errado, então parece que o problema vem de outro imagemagick comando usado por 'convert' ou de outra biblioteca.

Aqui está um exemplo das saídas:

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

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

Responder1

Depois de mais algumas investigações, parece que o problema vem do ghostscript, que está faltando a -dUseCIEColoropção. E pelo que reuni na web não é possível passar parâmetros para o ghostscript através do imagemagick. O que é possível é chamar os 2 comandos juntos com um pipe:https://stackoverflow.com/questions/653380/converting-a-pdf-to-png

Meu caso de uso específico

Isso é um pouco mais específico para o meu caso de uso, mas achei que alguém poderia estar interessado. Como estamos gerando miniaturas via Paperclip em nossa aplicação rails, criei um novo processador de clipes para cuidar da conversão de pdf para jpg e então o imagemagick assume para fazer o redimensionamento usual. Meu código com um exemplo aqui:https://gist.github.com/3059321

informação relacionada