画像の縮小率を画像の上に表示する (Illustrator CS3/CS4編)

今回は質問いただいた中からIllustratorに関するものを掲載します。スクリプトの一部は質問いただいた方のものですが、デジクリへの掲載許可を得ています。
スクリプトはIllustratorに配置された画像の上に情報を表示するものです。リンクされた画像、埋め込まれた画像の両方が対象になります。
このままスクリプトを実行すると新規にレイヤーが作成され、そのレイヤーに画像のファイル名、拡大縮小率(スケール)が表示されます。なお、MacOS Xの場合、ファイル名が日本語の場合正しく表示されないことがあります。これに関しては以下のURLにあるInDesignの変換処理部分を参照してください。

http://www.openspc2.org/projectX/InDesign/0012/index.html

(function(){
var CR = String.fromCharCode(13); // 改行コード
var targetItem = [];
var count = 0;
var rectW = 150; // 情報を表示する四角形の横幅
var rectH = 40; // 情報を表示する四角形の縦幅
var allItems = app.activeDocument.pageItems;
// 該当するオブジェクトをピックアップ
for(var i=0; i<allItems.length; i++){
var tp = allItems[i].typename;
if (( tp == "PlacedItem") || ( tp == "RasterItem")){
targetItem[count++] = allItems[i];
}
}
// 該当するオブジェクトの情報を表示
var layObj = app.activeDocument.layers.add();
layObj.name = "画像情報 ("+ (new Date()); // 画像情報を取得した時間も名前に追加
for(i=0; i<count; i++){
var posX = targetItem[i].position[0];
var posY = targetItem[i].position[1];
var w = targetItem[i].width;
var h = targetItem[i].height;
var x = posX + (w - rectW) / 2;
var y = posY - (h - rectH) / 2;
drawRect(x, y, rectW, rectH);
var filename = targetItem[i].file.name; // ファイル名
var tfObj = activeDocument.textFrames.add();
var mA = targetItem[i].matrix.mValueA;
var mB = targetItem[i].matrix.mValueB;
var mC = targetItem[i].matrix.mValueC;
var mD = targetItem[i].matrix.mValueD;
var scaleW=Math.round((Math.sqrt((Math.pow(mA,2)) + (Math.pow(mB,2)))*100000))/1000;
var scaleH=Math.round((Math.sqrt((Math.pow(mC,2)) + (Math.pow(mD,2)))*100000))/1000;
tfObj.contents = filename + CR+ scaleW +"% x "+scaleH+"%";
tfObj.translate(x + 5, y - 12);
tfObj.paragraphs[0].justification = Justification.LEFT;
tfObj.textRange.size=9;
}
})();

// ----------------------------------------------------------------
// 四角形を描く
function drawRect(y, x, w, h){
var rectObj = app.activeDocument.pathItems.rectangle (x, y, w, h);
rectObj.fillColor = setCMYKColor(0, 0, 100, 0); // 黄色の地
rectObj.stroked = true; // 先にtrueを設定した後で線幅を指定しないとダメ
rectObj.strokeWidth = 1; // 1pt
rectObj.strokeColor = setCMYKColor(0, 0, 0, 100); // 黒線
return rectObj; // 四角形のオブジェクトを返す
}
// CMYKカラーを設定し、CMYKカラーオブジェクトを返す
function setCMYKColor(c,m,y,k){
var CMYK = new CMYKColor();
CMYK.cyan = c;
CMYK.magenta = m;
CMYK.yellow = y;
CMYK.black = k;
return CMYK;
}

[サンプルをダウンロード]