EPSをあれこれする必要が生じて、その対処であれこれしたことをメモ。 処理に使用した環境は macOS High Sierra です。
ダミーの 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
こんな画像です。
次に諸事情により 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 があっても変換は楽勝です。
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 がハングアップする、または非常に遅くなる現象がありました。メモリリークしているのか、なんなのか、せっかくのバッチ処理なのに残念な感じです。