ビットマップ画像を含むPostScriptファイルを小さくする方法
最終更新: 1999年11月23日
プリンタに搭載されているPostScriptインタープリタには圧縮されたデータを展開する機能があるので,
それを利用してビットマップ画像を含むPostScriptを小さくする方法を説明します.
画像をJPEG, BMP, GIFなどのビットマップ形式で持っていて, それをPostScript形式に変換する状況を対象にします.
PostScript形式の文書をホームページに置いたりプレプリントサーバーに置くときに知っていると便利です.
pnmtops以外はPostScript level 2以上のプリンタしか印刷できないPSを生成するので注意して下さい.
PS level 2以上で対応している圧縮方法は
- DCTアルゴリズム
- JPEGで使われているアルゴリズム. 写真の圧縮に最適.
出来上がったPSをgzipまたはzipで圧縮する場合, PSの中の画像が以下のアルゴリズムで圧縮されていてもされていなくても,
最後にできる圧縮されたPSファイルの大きさはそれほど変わりません.
上記のDCTアルゴリズムではDCTで圧縮したほうがしないよりかなり小さくなります.
- Flateアルゴリズム
- gzipやzipで使われているアルゴリズム. 写真以外の圧縮に最適だが,
PostScript level 3でしか使えない.
- LZWアルゴリズム
- GIFで使われているアルゴリズム.
圧縮率はなかなか良いが,
Unisysの特許に抵触する.
- Run Lengthアルゴリズム
- あまり圧縮率は良くない.
- G3 FAXアルゴリズム
- 白黒画像に適したアルゴリズム. このアルゴリズムで画像を圧縮してPSに埋め込めるプログラムは知りません. 圧縮率はRun Lengthと同じくらいです.
があります. この内上の4つでPSファイルに圧縮した形式で画像を埋め込む方法を説明します.
DCTアルゴリズム
まず画像をJPEG形式に変換してjpeg2psでPSに変換すればOKです.
写真の場合, 元のサイズの百分の一, 圧縮せずに作ったPSをgzipまたはzipで圧縮した場合の十分の一程度まで小さくなります.
JPEGがプログレッシブ形式だとエラーになるので必ず普通にJPEGにして下さい.
Flateアルゴリズム
ImageMagickに含まれるconvertプログラムで"convert -compress Zip 元のファイル 新しいファイル.ps3"のように変換すればOKです.
ImageMagick以外にFlateアルゴリズムで圧縮したPSを作れるプログラムは知りません.
LZWアルゴリズム
コンパイル時に"--enable-lzw"を指定して作った
ImageMagickに含まれるconvertプログラムで"convert -compress LZW 元のファイル 新しいファイル.ps2"のように変換すればOKです. EPS形式にした場合は,
.ps2を.eps2にします.
Run Lengthアルゴリズム
ImageMagickに含まれるconvertプログラムで"convert -compress RunLengthEncoded 元のファイル 新しいファイル.ps2"のように変換すればOKです.
またpbmplusの中のpnmtopsで"pnmtops -rle"としてもできますが,
画像を不必要に劣化させてPSに埋め込むことがあります.
劣化させないpnmtopsがpbmplus-autoconf.tar.gzの中にpnmtops2という名前で含まれています.
TeXからPS及びPDFを作るときのコツに戻る
松本 隆太郎
感想コメントなどは
に送ってください。