Генерация миниатюр с помощью imagemagick не отображает правильные цвета

Генерация миниатюр с помощью 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» в каталоге моего приложения /bin. Команда работает, но результат все еще неверный. Похоже, проблема связана либо с другой командой imagemagick, используемой «convert», либо с другой библиотекой.

Вот пример выходных данных:

  • Правильный вывод: слева
  • Неправильный вывод: справа
    Правильный вывод Неправильный вывод

Странно, но с некоторыми страницами одного и того же pdf-файла вывод всегда правильный. Есть идеи, какая библиотека или команда может быть проблемой, или есть ли правильный набор опций для передачи в imagemagick, чтобы всегда получать правильно?

решение1

После некоторых дополнительных исследований выяснилось, что проблема исходит от ghostscript, в котором отсутствует опция -dUseCIEColor. И из того, что я собрал в Интернете, невозможно передать параметры ghostscript через imagemagick. Однако возможно вызвать 2 команды вместе с помощью конвейера:https://stackoverflow.com/questions/653380/converting-a-pdf-to-png

Мой конкретный вариант использования

Это немного более специфично для моего варианта использования, но я подумал, что кому-то это может быть интересно. Поскольку мы генерируем миниатюры через Paperclip в нашем приложении rails, я создал новый процессор paperclip, чтобы позаботиться о преобразовании pdf в jpg, а затем imagemagick берет на себя обычное изменение размера. Мой код с примером здесь:https://gist.github.com/3059321

Связанный контент