ImageMagick конвертирует PDF в jpeg, имеет плохое качество текста после обновления версии ImageMagick до 6.7.8
После обновления ImageMagick
качество текста ухудшилось при преобразовании pdf в jpeg:
Старое изображение
![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.
какие-либо рекомендации?
Ответы
Ответ 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