web-dev-qa-db-fra.com

ImageMagick convert pdf en jpeg a une mauvaise qualité de texte après la mise à niveau de la version ImageMagick vers 6.7.8

Après la mise à niveau ImageMagick la qualité du texte s'est dégradée lors de la conversion du pdf en jpeg:

Ancienne image  enter image description here

Nouvelle image  enter image description here Commande de conversion: convert foo.pdf foo.jpeg

Ancienne version d'ImageMagick:

[root@home]#  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

taille des fichiers générés:

-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

Après la mise à niveau d'ImageMagick

[root@home]#  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

taille des fichiers générés:

-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

J'ai essayé d'utiliser antialias flag:

convert -antialias  foo.pdf foo.jpeg

Ce qui n'a rien fait, j'ai essayé de définir une valeur plus élevée quality :

convert -quality 100 foo.pdf foo.jpeg

et super échantillonnage :

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

les deux donnaient des fichiers plus gros et de meilleurs résultats, mais fonctionnaient plus longtemps et avaient une qualité inférieure à l'ancienne version d'ImageMagick.

des conseils?

Lien vers le fichier

31
Kuf

Je vois le même problème avec votre exemple de fichier. Il ressemble aux délégués d'ImageMagick pour la conversion PDF peut avoir changé avec la nouvelle installation.

Si tu essayes convert -verbose foo.pdf foo.jpeg, Est-ce que tu vois -sDEVICE=pngalpha dans la commande envoyée à gs? Le périphérique pnmraw a été utilisé dans le passé, et revenir à cela semble résoudre le problème pour moi.

Dans ImageMagick's delegates.xml fichier (qui peut être dans/etc/ImageMagick, mais qui pourrait être ailleurs selon votre configuration), recherchez le decode="ps:alpha" déléguer une ligne et modifier -sDEVICE=pngalpha dans la commande pour -sDEVICE=pnmraw. (Vous pouvez probablement simplement rechercher pngalpha dans le fichier.)

35
potatoe

il semble que ce problème à DPI . lors de la conversion de pdf, imagemagick utilisant Ghostscript. vous pouvez sauter en utilisant 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

set -r option valeur supérieure. Ghostscript la valeur par défaut est 100DPI.

ou en utilisant l'option de conversion -densité. cette option définit le pdf converti en DPI.

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

Les fichiers PDF sont des fichiers vectoriels et n'ont pas de taille spécifique. Leur taille est contrôlée en définissant la densité et les unités avant de lire le fichier PDF. Vous pouvez obtenir une meilleure qualité pour la même taille de fichier de sortie souhaitée par suréchantillonnage. Cela signifie rastériser le PDF à une grande taille, puis redimensionnez à la taille réelle souhaitée. Par exemple dans ImageMagick:

convert -units pixelsperinch -density 288 image.pdf -resize 25% output.jpg

La densité nominale si elle est laissée de côté est de 72 dpi. Donc 72 * 4 = 288. Redimensionner ensuite par 1/5 = 25% revient à la même taille par défaut, mais devrait être beaucoup mieux. Modifiez la densité ou redimensionnez pour gérer la qualité et la taille finale comme vous le souhaitez.

0
fmw42