Home About Contact
ExtendScript , Illustrator , EPS , DTP

macOS で EPSファイルをJPEGに変換するなど

EPSをあれこれする必要が生じて、その対処であれこれしたことをメモ。 処理に使用した環境は macOS High Sierra です。

ダミーの EPS を手書きする

ダミーの ESP 画像を用意する必要があったのですが、Adobe CC 系のアプリで EPS 書き出しすると結構ファイルサイズが大きくなってしまう。 ググってみると、EPSは単なるテキストファイルとして直接テキストエディタで記述することができることがわかったので、手書きすることに。

square.eps

%!PS-Adobe-3.0 EPSF-3.0
%%BoundingBox: 0 0 300 300

newpath
3 3 moveto
296 3 lineto
296 296 lineto
3 296 lineto
3 3 lineto
gsave
0.9 0.6 0.4 setrgbcolor
fill
grestore
0 0 0 setrgbcolor
3 setlinewidth
stroke

%%EOF

こんな画像です。

square

EPS を JPEG に変換したい ( Ghostscript 編 )

次に諸事情により EPS を JPEG に変換する必要が生じた。 しかも、EPSファイルは大量にあるため、バッチ変換したい。

EPSといえば Ghostscript なので、mac で Ghostscript の gs コマンドを使えるようにする。

ghostscript.com から ダウンロード して ghostscript-9.23.tar.gz を展開、あとはいつも通り・・・

./configure --disable-compile-inits --prefix=/usr/local/gs923
make
sudo make install

ですんなりインストールできた。 あとは、~/.bashrc に gs コマンドへのパスを追記すれば gs コマンドが使えるようになる。

PATH=$PATH:/usr/local/gs923/bin

EPSファイルを JPEG 変換するには:

gs -dBATCH -dNOPAUSE -sDEVICE=jpeg -dEPSCrop -sOutputFile=square.jpg square.eps

ポイントは -dEPSCrop オプション。これで意図通りに画像をクロップしてくれます。
解像度を制御するには -r72 とか -r300 などをオプションに追加すればよい。
さらに品質を指定するには -dJPEGQ=100 などを追加。

ちなみに、PNG 形式で出力したい場合はこれ:

gs -dBATCH -dNOPAUSE -sDEVICE=png16m -dEPSCrop -r72 -sOutputFile=square.png square.eps

-sDEVICE オプションに何が使えるかは このあたりのドキュメント Devices を見ればわかる。

For normal use we recommend png16m for 24-bit RGB color, or pnggray for grayscale とあるから、通常使用では png16m か pnggray がおすすめということらしい。 32-bit RGBA の場合は pngalpha を使うと。 ( pngalpha : The pngalpha device is 32-bit RGBA color with transparency indicating pixel coverage. )

これで、大量に EPS があっても変換は楽勝です。

EPS を JPEG に変換したい ( Illustrator CC 編 )

Illustrator でも ExtendScript を使うことで、バッチ変換できます。 Ghostscript で変換した方がてっとりばやいとは思いますが、 Illustrator ExtendScript で JPEG 変換の情報が少なかったので、ここにメモしておきます。

EPS を Photoshop で変換するには こちら Photoshop CS4 , EPSファイルJPEGに変換する ExtendScript

/path/to/ の部分は使用している環境に読み替えてください。

var epsFilename = 'square.eps';
var inputFile = File('/path/to/'+epsFilename);

var doc = app.open( inputFile );

epsFilename.match(/(.*).eps/);
var jpegFilename = RegExp.$1 + '.jpg';
var outputFile = File('/path/to/'+ jpegFilename);

var exportOptions = new ExportOptionsJPEG();
exportOptions.antiAliasing = true;
exportOptions.artBoardClipping = false;
exportOptions.qualitySetting = 100;
exportOptions.horizontalScale = (300/72) * 100;
exportOptions.verticalScale = (300/72) * 100;

doc.exportFile( outputFile, ExportType.JPEG, exportOptions);

doc.close( SaveOptions.DONOTSAVECHANGES );

どうやら変換時の解像度指定は exportOptions.horizontalScale と exportOptions.verticalScale を使うようです。

ただバッチ処理するときに一度に処理する画像件数を 100 程度にしておかないと Illustrator がハングアップする、または非常に遅くなる現象がありました。メモリリークしているのか、なんなのか、せっかくのバッチ処理なのに残念な感じです。