ImageMagick
をアップグレードした後、pdfをjpegに変換するとテキスト品質が低下します。
古い画像
新しい画像 変換コマンド: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バージョンよりも品質が低下しました。
何かアドバイスはありますか?
サンプルファイルでも同じ問題が発生します。 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を検索できます。)
[〜#〜] 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
PDFファイルはベクターファイルであり、特定のサイズはありません。それらのサイズは、PDFファイルで読み取る前に密度と単位を定義することによって制御されます。スーパーサンプリングにより、同じ希望の出力ファイルサイズでより良い品質を得ることができます。つまり、PDFを大きなサイズにしてから、希望の実際のサイズにサイズ変更します。たとえば、ImageMagickの場合:
convert -units pixelsperinch -density 288 image.pdf -resize 25% output.jpg
省略した場合の公称密度は72 dpiです。つまり、72 * 4 = 288です。次に、1/5 = 25%でサイズ変更すると、同じデフォルトサイズに戻りますが、見栄えがよくなるはずです。必要に応じて、密度を変更するかサイズを変更して、品質と最終的なサイズに対処します。