Подтвердить что ты не робот

ImageMagick конвертирует PDF в jpeg, имеет плохое качество текста после обновления версии ImageMagick до 6.7.8

После обновления ImageMagick качество текста ухудшилось при преобразовании pdf в jpeg:

Старое изображение enter image description here

Новое изображение enter image description here Команда преобразования: convert foo.pdf foo.jpeg

Старая версия ImageMagick:

[[email protected]]#  convert -version
Version: ImageMagick 6.2.8 05/07/12 Q16 file:/usr/share/ImageMagick-6.2.8/doc/index.html
Copyright: Copyright (C) 1999-2006 ImageMagick Studio LLC

сгенерированный размер файлов:

-rw-r--r-- 1 root root 139K Apr  2 16:11 foo-0.jpeg
-rw-r--r-- 1 root root 130K Apr  2 16:11 foo-1.jpeg
-rw-r--r-- 1 root root 334K Mar 24 14:27 foo.pdf

После обновления ImageMagick

[[email protected]]#  convert -version
Version: ImageMagick 6.7.8-10 2012-08-17 Q16 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2012 ImageMagick Studio LLC
Features: OpenMP

сгенерированный размер файлов:

-rw-r--r-- 1 root root  60K Apr  2 16:11 foo-0.jpeg
-rw-r--r-- 1 root root  55K Apr  2 16:11 foo-1.jpeg
-rw-r--r-- 1 root root 334K Mar 24 14:27 foo.pdf

Я пробовал использовать antialias флаг:

convert -antialias  foo.pdf foo.jpeg

Что не делалось, я попытался установить более высокий quality:

convert -quality 100 foo.pdf foo.jpeg

и супер выборка:

convert -density 288 -background white -alpha off foo.pdf -resize 25%  foo.jpeg

обе дали большие файлы и лучшие результаты, но побежали больше времени и имели более низкое качество, чем старая версия ImageMagick.

какие-либо рекомендации?

Ссылка на файл

4b9b3361

Ответ 1

Я вижу ту же проблему с вашим образцом. Похоже, что делегаты ImageMagick для преобразования PDF могут быть изменены с новой установкой.

Если вы попробуете convert -verbose foo.pdf foo.jpeg, вы видите -sDEVICE=pngalpha в команде, которая отправляется в gs? Устройство pnmraw использовалось в прошлом, и переход на это, похоже, устраняет проблему для меня.

В файле ImageMagick delegates.xml (который может быть в /etc/ImageMagick, но может быть где-то еще в зависимости от вашей установки), найдите строку делегата decode="ps:alpha" и измените -sDEVICE=pngalpha в команде на -sDEVICE=pnmraw, (Возможно, вы можете просто найти pngalpha в файле.)

Ответ 2

кажется, что проблема в DPI. при преобразовании pdf, imagemagick с помощью Ghostscript. вы можете пропустить с помощью imagemagick.

$ gs -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dGridFitTT=2 -dUseCropBox -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -r200x200 -sDEVICE=jpeg -dJPEGQ=100 -sOutputFile=foo-%05d.jpg foo.pdf

установите значение параметра -r более высокого значения. Ghostscript имеет значение по умолчанию - 100DPI.

или с помощью опции-варианта конверсии. этот параметр задает преобразованный DPI PDF.

$ convert -density 200x200 foo.pdf foo.jpg