2011年 12月 1日 掲載
さて,前回使ったコマンド,ps2raster の解説である.
ps2raster は,GMT で出力した PSファイル(EPSファイル)を, ラスタ画像(ビットマップ形式の画像)に変換するコマンドである. とりあえず,コマンドのあとに対象となる PSファイル(EPSファイル)を指定すれば, ラスタ画像ができあがるので,ちょっとためしてみよう. psbasemapコマンドで 1x1 の EPSファイルを作って変換してみる.
$ psbasemap -Jx1 -R0/1/0/1 -Ba1 > a.eps $ ps2raster a.eps
とすると,新しく「a.jpg」という JPEGファイルができているはずである.
$ ls -ltr : : -rw-r--r-- 1 kdo wheel 22082 Dec 1 21:31 a.eps -rw-r--r-- 1 kdo wheel 13820 Dec 1 21:31 a.jpg
できあがった a.jpg は,下のような画像である.
なんか横になってるし…. これは,-Pオプションでポートレートモードにすることで解決できる.
$ ps2raster a.eps -P
画像の向きはなおったが,今度は余白が広すぎるのが気になる. 描画範囲ギリギリで切り出すのが -Aオプションである.
$ ps2raster a.eps -P -A
この -Aオプションは,軸ラベルなどが元の EPSファイルの BoundingBox からはみ出したのを修正する用途にも使うことができる(その58).
さて,余白を取り除いたとしても,できあがった JPEGファイルはかなり大きい. いったいどういう縮尺で変換しているのだろう. man を読むとデフォルトでは 300dpi(1cm が 118ピクセル)で変換しているようである. これは印刷用の解像度で,このページのような WEB に掲載するには解像度が高すぎる. 変換時の解像度を変更するには -Eオプションを使う.
$ ps2raster a.eps -P -E72
PC の標準解像度 72dpi で変換してみた.
これで,確かに画像のサイズはちょうどいい大きさになった. が,目盛数値はガクガク,枠線はやせすぎで,あまり見栄えがよくない. これは -Qオプションでアンチエイリアシングをかけることで解決できる. -Qt で,テキスト(目盛数値,軸ラベルなど)にアンチエイリアシングがかかる.
$ ps2raster a.eps -P -E72 -Qt
-Qg で,グラフ(枠線もふくむ)にアンチエイリアシングがかかる.
$ ps2raster a.eps -P -E72 -Qg
テキストとグラフの両方にアンチエイリアシングをかけるには, -Qtg ではなくて,-Qt と -Qg を両方指定する.
$ ps2raster a.eps -P -E72 -Qt -Qg
ps2rasterコマンドのデフォルトの出力は JPEGファイルであるが, -Tオプションで,別の形式の画像ファイルに変換できる. たとえば,-Tg と指定すると,PNGファイルを出力する.
$ ps2raster a.eps -P -Tg
出力画像ファイルの形式の指定は,それぞれ
である. EPS,PDF はラスタ形式ではないが,ps2raster で変換できる.
出力ファイル名は,元の PSファイル(EPSファイル)の拡張子を変えたものになるが, -Fオプションで変更することもできる. このとき拡張子は自動的に付けられるので指定する必要はない(指定しても無効である).
$ ps2raster a.eps -A -Te -Fa2 $ ls -ltr : : -rw-r--r-- 1 kdo wheel 22049 Dec 1 21:40 a2.eps
この例のように EPSファイルから EPSファイルに変換する場合は, 元のファイル名と出力ファイル名が,デフォルトでは同じになってしまうので, -Fオプションでのファイル名変更は必須となる.
最後に,地図をラスタ画像化するときの小技を紹介しよう.
GMT で地図を描画して,-Eオプションで縮小し, -Qgオプションでアンチエイリアシングをかけると,陸地に細い線が入ることがある.
$ pscoast -Jm0.5 -R120/150/20/50 -Ggray -Dh -P -Ba10f5 > map.eps $ ps2raster map.eps -E72 -Qt -Qg -Tg
これは,GMT の陸地のデータが分割されているためで, アンチエイリアシングをかけると,継目が見えてしまうのである. これを避けるには,デフォルトの 300dpi でアンチエイリアシングなしでラスタ化した画像を, ImageMagick の convertコマンドなどで縮小するとよい.
$ ps2raster map.eps -Tg -Ftmp $ convert -resize 24% tmp.png map.png
[ KDOホームにもどる] [ いちからはじめる GMT インデックスにもどる ]
(C) 2011 KDO