Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Создание эскизов JPG из PDF вызывает проблемы с новой версией ImageMagick

Автор вопроса: BastienОтветов: 2

Я использую Imagemagick для создания эскизов изображений PDF-файлов с помощью этой команды:

convert 'input.pdf[0]' -resize "100x140>" -colorspace 'rgb' 'output.jpg' 2>/dev/null

Некоторые из PDF-файлов находятся в цветовом пространстве CMYK, поэтому ожидаемое цветовое пространство указано как rgb. Это работало нормально, пока я не обновился до последних версий Imagemagick (6.6.7-1) и ghostscript (9.01_0), теперь похоже, что преобразование в rgb больше не работает, вот пример вывода:

сбой преобразования cymk-rgb

(Фон должен быть белым, а не черным). Кажется, что проблема связана с параметром -resize, потому что, если я его удалю, вывод будет правильным.

Чтобы получить ожидаемый результат, я теперь делаю два прохода: первый для преобразования в rgb и второй для изменения размера изображения, но это не очень элегантно. Есть ли лучшее решение?

  • Протестировано с imagemagick 6.6.5-6 и 6.6.7-6, и я подтверждаю эту проблему, более поздний становится черным фоном, а старый работает как положено. greut 17.02.2011
  • У меня такая же проблема с 6.6.7-10 и gs 9.01. tomtaylor 06.03.2011
  • То же самое с ImageMagick 6.7.4-0 и gs 9.04. Любая подсказка о том, как это решить? PowerKiKi 13.01.2012
  • У меня возникла похожая проблема, решил ее с помощью GraphicsMagick. Martin Krung 21.01.2016

pdfimagemagickghostscriptthumbnailspaperclip

Ответы

Ответ 1 · рейтинг 3 · Bastien

Я решил эту проблему, передав дополнительную опцию -flatten. Теперь мои миниатюры отображаются правильно.

Ответ 2 · Kurt Pfeifle

А если поменять местами варианты? Это может избавить вас от запуска двух разных команд. Потому что эти две команды:

convert 'in.pdf[0]' -resize "100x140>" -colorspace 'rgb' 'out.jpg'
convert 'in.pdf[0]' -colorspace 'rgb' -resize "100x140>" 'out.jpg'

заставит (последние версии) ImageMagick обрабатывать файлы по-другому; каждый раз он следует порядку, указанному в командной строке (это неверно для более старых версий).

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы