Ghostscript でラスタライズ(#2:アンチエイリアス)
今回は PDF をラスタライズする際に、図形(ラインアート)の境界のギザギザ(ジャギー)を目立たなくさせるという、アンチエイリアスの処理をかませてみます。
Photoshop や Illustrator でそうする場合は、アンチエイリアスという設定項目がありますので手順は省略します。
(Illustrator のアンチエイリアスの設定は、今回は アートに最適 を使用しています)
Ghostscript でアンチエイリアス処理をする場合は、
$ gs -dGraphicsAlphaBits=4 -r72 -dSAFER -sDEVICE=png16m -o out.png in.pdf
というように、-dGraphicsAlphaBits というオプションを使用します。
- -dGraphicsAlphaBits / -dTextAlphaBits
- アンチエイリアスのレベルを数字で指定します。ラインアート(Graphics)とテキスト(Text)で別々にレベルを指定できます。
(ラインアートとは Illustrator でいう「線や塗り」を表わし、テキストとは同様に「アウトライン化されていない文字」を表わしています。
ちなみに画像(Image)はいずれでもないので、アンチエイリアス処理自体がありません)
レベルに使用できる数字は 1, 2, 4 の3種類で、大きくなるほどジャギーが目立ちにくく、処理時間が多くなります。
このオプション自体が未指定の場合はレベルが 1 とみなされます。1 はアンチエイリアス処理しません。
ではレベルをいろいろに変えつつ、このオプションを試してみましょう。
$ gs -r72 -dSAFER -sDEVICE=png16m -o out1.png logo-ghost.pdf $ gs -dGraphicsAlphaBits=2 -r72 -dSAFER -sDEVICE=png16m -o out2.png logo-ghost.pdf $ gs -dGraphicsAlphaBits=4 -r72 -dSAFER -sDEVICE=png16m -o out4.png logo-ghost.pdf
ラスタライズの解像度は、ジャギーが目立っていた 72ppi のみとしています。
また、logo-ghost.pdf に使用している Ghost は一見して文字ですが、これは Illustrator でアウトライン化してあるのでラインアートということになります。よってここで指定するのは -dTextAlphaBits ではなく、-dGraphicsAlphaBits になります。
この結果はつぎの通りになりました。
-dGraphicsAlphaBits | 未指定(=1) | 2 | 4 |
---|---|---|---|
ラスタライズ後(等倍) | ![]() |
![]() |
![]() |
ラスタライズ後(4倍) | ![]() |
![]() |
![]() |
どうでしょうか? 確かにレベルが大きくなるほどジャギーが目立ちにくくなっているのが分かります。
1と2の違いはハッキリしているのに対して、2と4の違いはそれほどではなさそうです。しかし、拡大表示してみると4が最良のような気がします。
では、Photoshop や Illustrator でラスタライズした結果と比較してみましょう。
Photoshop | Illustrator | Ghostsctipt (-dGraphicsAlphaBits=4) | |
---|---|---|---|
ラスタライズ前(等倍) | ![]() |
![]() |
![]() |
ラスタライズ後(等倍) | ![]() |
![]() |
![]() |
ラスタライズ後(4倍) | ![]() |
![]() |
![]() |
拡大画像では明らかですが、等倍であっても Photoshop & Illustrator と Ghostscript との間には明らかな違いが見え、前者のほうが綺麗に見えます。
Ghostscript では、Photoshop や Illustrator 並のラスタライズをすることができないのでしょうか?
次回はその対策を試してみます。
使用バージョン: Photoshop CS5(12.0 x64) / Illustrator CS5(15.0.0) / Ghostscript 9.16