web-dev-qa-db-ja.com

ImageMagickのバージョンを6.7.8にアップグレードした後、ImageMagickでPDFからJPEGに変換するとテキスト品質が低下する

ImageMagickをアップグレードした後、pdfをjpegに変換するとテキスト品質が低下します。

古い画像 enter image description here

新しい画像 enter image description here 変換コマンド:convert foo.pdf foo.jpeg

古い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

生成されたファイルのサイズ:

-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をアップグレードした後

[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

生成されたファイルのサイズ:

-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バージョンよりも品質が低下しました。

何かアドバイスはありますか?

ファイルへのリンク

31
Kuf

サンプルファイルでも同じ問題が発生します。 PDF変換のためのImageMagickのデリゲートが新しいインストールで変更された可能性があります。

convert -verbose foo.pdf foo.jpegを試した場合、gsに送信されるコマンドに-sDEVICE=pngalphaが表示されますか? pnmrawデバイスは過去に使用されていましたが、これに切り替えると問題が解決したようです。

ImageMagickのdelegates.xmlファイル(/ etc/ImageMagickにある場合がありますが、設定によっては別の場所にある場合があります)で、decode="ps:alpha"デリゲート行を探し、コマンドの-sDEVICE=pngalphaを次のように変更します。 -sDEVICE=pnmraw。 (おそらく、ファイル内でpngalphaを検索できます。)

35
potatoe

[〜#〜] 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です。

または変換オプション-densityを使用します。このオプションは、PDF変換されたDPIを設定します。

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

PDFファイルはベクターファイルであり、特定のサイズはありません。それらのサイズは、PDFファイルで読み取る前に密度と単位を定義することによって制御されます。スーパーサンプリングにより、同じ希望の出力ファイルサイズでより良い品質を得ることができます。つまり、PDFを大きなサイズにしてから、希望の実際のサイズにサイズ変更します。たとえば、ImageMagickの場合:

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

省略した場合の公称密度は72 dpiです。つまり、72 * 4 = 288です。次に、1/5 = 25%でサイズ変更すると、同じデフォルトサイズに戻りますが、見栄えがよくなるはずです。必要に応じて、密度を変更するかサイズを変更して、品質と最終的なサイズに対処します。

0
fmw42