EPSファイルの情報について
昨晩色々覗き見してたときに、ああ、あれってああやってこうやれば見れるかなって思ったので、コードを起こしてみた。
Bridgeさんが情報を出してくれないのは、Bridgrさんが冷たいわけではなく、EPSファイル自体がメタデータにTIFFやEXIF等のメタデータを含まない事に起因するのですが…ファイルフォーマットとしてはもう骨董品ですからね。
まずこちら
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Adobe Photoshop Version 14.2.1 20140207.r.570 2014/02/07:23:00:00
%%Title: ì¬qÇàcï.eps
%%CreationDate: 2014/03/25 14:00
%%BoundingBox: 0 0 425 284
%%HiResBoundingBox: 0 0 424.8 283.5
%%SuppressDotGainCompensation
%%DocumentProcessColors: Cyan Magenta Yellow Black
%ADO_ContainsXMP: MainFirst
%%EndComments
%%BeginProlog
%%EndProlog
%%BeginSetup
%%EndSetup
%ImageData: 2360 1575 8 4 0 1 6 "beginimage"
%BeginPhotoshop: 10426
% 3842494D040400000000
・
・
・
ヘッダ部分ですが、Bridgeが表示するのはBoundingBoxです。これはプレビューのサイズを表わすので「クソの役にもたちません」です。
じゃあ、何を見れば良いかというと、ImageDataです。頭から横ピクセル数、縦ピクセル数、ビット深度、カラーモード、その他のチャンネル数、ブロックサイズ、データエンコーディング、という具合に並んでいます。
上の例であれば、2360×1575(px)、8bit/channel、CMYKモード、アルファチャンネルなし、ブロックサイズ=1、エンコーディング=JPG(最高画質/低圧縮率)となります。これを正規表現を利用して抽出します。
var re = /%ImageData:\s(\d+)\s(\d+)\s(\d)\s(\d).+beginimage/;
var f = File.openDialog ("select EPS file");
var ls = ["","grayscale","Lab","RGB","CMYK"];
var str = "";
if (f.open('r')){
while (!f.eof){
if(f.readln().match (re)) {
str = "width=" + RegExp.$1 + "px, "
+ "height=" + RegExp.$2 + "px, "
+ "depth=" + RegExp.$3 + "bit/ch, "
+ "color mode=" + ls[RegExp.$4];
alert (str);
break;
}
}
}
こーんな、コードです。