Создание эскизов с помощью imagemagick не отображает правильные цвета
Создание миниатюр PDF-файлов с помощью imagemagick иногда приводит к неправильным цветам. Мы используем старую версию imagemagick (6.5.7-8, это версия, установленная на серверах heroku). Вот команда, которую мы сейчас используем:
convert \
-size "725x1200>" \
-colorspace RGB \
-flatten \
-density 300 \
-quality 100 \
input.pdf \
output.jpg
Я пробовал использовать разные цветовые пространства, такие как sRGB,YIQ,... но ни одно из них не отображает цвет правильно.
Использование imagemagick-6.7.7-6 локально работает, поэтому я попытался связать команду 'convert' в моем каталоге application / bin, команда работает, но результат все еще не верен, поэтому кажется, что проблема связана с другим imagemagick команда, используемая "convert" или из другой библиотеки.
Вот пример выходных данных:
- Правильный вывод: слева
- Неверный вывод: справа
Странно, но на некоторых страницах одного и того же PDF вывод всегда корректен. Любая идея, какая библиотека или команда может быть проблемой, или есть ли надлежащий набор опций для передачи в imagemagick, чтобы всегда сделать это правильно?
1 ответ
После еще одного расследования выясняется, что проблема связана с ghostscript, в котором отсутствует -dUseCIEColor
вариант. И из того, что я собрал в Интернете, невозможно передать параметры в ghostscript через imagemagick. Однако возможно вызвать две команды вместе с каналом: https://stackoverflow.com/questions/653380/converting-a-pdf-to-png
Мой конкретный вариант использования
Это немного более конкретно для моего варианта использования, но я подумал, что кто-то может быть заинтересован. Поскольку мы генерируем миниатюры с помощью Paperclip в нашем приложении rails, я создал новый процессор paperclip, чтобы позаботиться о преобразовании pdf в jpg, и затем imagemagick вступает во владение, чтобы выполнить обычное изменение размера. Мой код с примером здесь: https://gist.github.com/3059321