クリエイター手抜きプロジェクト[413]Adobe Photoshop CS3〜CC 2014編 選択されたレイヤーやドキュメントの内部情報を表示する/古籏一浩

投稿:  著者:  読了時間:7分(本文:約3,200文字)


今回は、Photoshopで選択されたレイヤーの内部情報を表示するスクリプトです。前回と同様に開発者向けのスクリプトです。

Photoshopの場合、Illustratorと違ってあまり融通がききません。そこで、レイヤー情報とドキュメント情報、アプリケーション情報を表示するようにしてあります。

前回同様、GUIで編集エリアに出力されるので、表示されたオブジェクト内容をコピーすることができます。閲覧時にはホイールマウスを使うとスムーズに内容を確認できます。





// 選択したレイヤーの詳細な情報を表示する
(function(){
var selObj = app.activeDocument.activeLayer;
// GUI
var winObj = new Window("dialog", "ステータス表示", [0, 0, 800, 640]);
winObj.add("button", [ 10, 50, winObj.frameSize.width-10, 70 ], "完了", { name : "ok" });
var statusArea = winObj.add("edittext",
[ 10, 100, winObj.frameSize.width-10, winObj.frameSize.height-40]);
var parentBtn = winObj.add("button", [10, 10, 110, 40], "親オブジェクト");
var docBtn = winObj.add("button", [130, 10, 320, 40], "documentオブジェクト");
var appBtn = winObj.add("button", [340, 10, 470, 40], "appオブジェクト");
statusArea.text = getObjectInformation(selObj);
parentBtn.onClick = function(){
statusArea.text = getObjectInformation(selObj.parent);
}
docBtn.onClick = function(){
statusArea.text = getObjectInformation(app.activeDocument);
}
appBtn.onClick = function(){
statusArea.text = getObjectInformation(app);
}
winObj.center();
winObj.show();
// オブジェクトの情報を取得
function getObjectInformation(obj){
if (!obj){ return; }
var text = "";
for(var i in obj){
try{ var t = checkType(obj[i]);
}catch(e){ t = "【種類不明】"; }
try{
text = text + i + " = " + obj[i] + " | " + t + "\n";
// objectの場合
if (t == "object"){
// 1階層のみ処理する
for(var j in obj[i]){
try{ var t1 = checkType(obj[i]);
}catch(e){ t1 = "【不明】"; }
try{
text = text + "  " + j + " = " + obj[i][j] + " | " + t1 + "\n";
}catch(e){
text = text + j + "【取得不可】\n";
}
}
}
// Arrayの場合
if (t == "Array"){
for(var j=0; j<obj[i].length; j++){
var t2 = checkType(obj[i][j]);
text = text + "  "+j+":"+obj[i][j]+ " | " + t2 +"\n";
// objectの場合
if (t2 == "object"){
for(var k in obj[i][j]){
try{
text = text + "    " + k + " = " + obj[i][j][k] + "\n";
}catch(e){
text = text + k + "【取得不可】\n";
}
}
}
}
}
}catch(e){
text = text + i + " | " + t + "【取得不可】\n";
}
}
return text;
}
// オブジェクトの型を調べる
function checkType(targetObj){
//$.writeln(targetObj);
if (targetObj instanceof Array){
return "Array";
}
return typeof(targetObj);
}
})();


【古籏一浩】openspc@alpha.ocn.ne.jp
< http://www.openspc2.org/ >

Ingress(イングレス)続き。先々週、突如として長野県(?)に大量にポータルが生えてきた。ポータル生え生え祭り。家の近くに3つしかなかったのが、大幅に増えて4つに(大幅じゃないけど増えた)。

これで、ようやく歩いて行ける範囲にポータルが生えてきたことになるけど、やる人が少ないからアイテム取るだけのマンネリゲーム。田舎ならではの楽しみ方を考えないといけないなあ、ということでこんなふうにしてみました。

< https://pbs.twimg.com/media/B8bn7vDCMAAnsz6.png >

Ingressはポータルにレゾネーターを配置するけど、ポータルにしたい所にアイテムばらまいておけば、そこがポータルになるんじゃないか、という魂胆。

とりあえず、家の近くに200〜300個レゾネーターをきれいに配置。Ingressをプレイしている人がいれば、回収していくはず。ところが、なかなかなくならず......。とはいえ2〜3人はプレイしているみたいで、丸々一日経過してようやく全部回収されたようで。

田舎だとどこかポータルとっておけば誰も取りに来ないので、いつの間にかガーディアンメダルの色が変わるというメリットも。


・Adobe JavaScriptリファレンス
< http://www.amazon.co.jp/dp/B00FZEK6J6/ >

・Illustrator自動化基本編
< http://www.amazon.co.jp/dp/B00R5MZ1PA >

・ExtendScript Toolkit(ESTK)基本編
< http://www.amazon.co.jp/dp/B00JUBQKKY/ >

・Mac : JavaScript for Automation(JXA)例文辞典
< http://www.openspc2.org/reibun/JXA/Yosemite/ >

・jQuery+jQuery UI+jQuery Mobile逆引きハンドブック
< http://www.amazon.co.jp/dp/486354149X >

・jQueryプラグイン逆引きハンドブック
< http://www.amazon.co.jp/dp/4863541619/ >

・データビジュアライゼーションのためのD3.js徹底入門
< http://www.amazon.co.jp/dp/4797368861 >

・4K/ハイビジョン映像素材集
< http://www.openspc2.org/HDTV/ >

・JavaScript逆引きハンドブック
< http://www.amazon.co.jp/dp/4863541082 >

・クリエイター手抜きプロジェクト
< http://www.openspc2.org/projectX/ >

・Adobe Illustrator CS3 + JavaScript 自動化サンプル集
< https://www.ddc.co.jp/estore/cgi/item/start.cgi?m=DetailViewer&record_id=243 >
吉田印刷所の「印刷の泉」でも購入できるようになりました。