初心者がPhotoshopスクリプト(.jsx)を作ってみて得られた知識・ノウハウまとめ
概要
javascriptをほとんど書いたことが無い初心者がjsxでPhotoshopスクリプトを
書いて得られたノウハウを簡単にまとめてみました.
環境
Windows7 , 64ビット
Photoshop CC バージョン7 SP1
Photoshop上でスクリプト(.jsx)の実行
Alt + F → R → Bでスクリプト選択ウィンドウが出ます。
実行したいスクリプトを選んでOKを押すとそのスクリプトが実行されます。
ファイル(F) → スクリプト(R) → 参照(B) でも可
デバッグ関連
alert()を使うと便利
ドキュメント関連
現在開いているドキュメントを複製する
var copiedDoc = app.activeDocument.duplicate();
var copiedDoc = app.activeDocument.duplicate();
copiedDocに複製後のドキュメントが格納されます。
ドキュメントを閉じる
copiedDoc.close();
セーブ確認をスキップさせたい場合は以下のように書きます.
copiedDoc.close(SaveOptions.DONOTSAVECHANGES);
レイヤー関連
レイヤーを選択する
app.activeDocument.activeLayer = layer;
app.activeDocument.activeLayer = layer;
activeLayerに選択させたいレイヤーを代入すればOK
レイヤーの表示/非表示の設定
layer.visible = false;
falseを入れると非表示、trueを入れると表示されます
現在開いているドキュメントの全てのレイヤーを非表示にする
function HideLayers(layObj) {
var n = layObj.artLayers.length;
if (n > 0) {
for (var i = 0; i < n; i++) {
// レイヤー非表示
layObj.artLayers[i].visible = false;
}
}
var ns = layObj.layerSets.length;
if (ns > 0) {
for (var i = 0; i < ns; i++) {
HideLayers(layObj.layerSets[i])
}
}
}
// 現在開いているドキュメントを全て非表示
HideLayers(app.activeDocument);
レイヤーがフォルダであるかどうかの判定
layer.typename === "ArtLayer"
レイヤーがフォルダの場合はfalse、フォルダでない場合はtrueになります
テキスト入力フォームつきのウィンドウを出す
ウィンドウを出す
windowtest.jsx
win = new Window("dialog", "タイトル");
win.show();
win = new Window("dialog", "タイトル");
win.show();
以下のようなウィンドウが表示されます.
ESCキーで閉じます.
テキスト入力フォームつきのウィンドウを出す
win = new Window("dialog", "タイトル");
win.add("edittext", { width: 100, height: 20, x: 100, y: 100 }, "ここに入力");
win.show();
ボタンを追加したい場合は第1引数に"button"、ラベルを追加したい場合は第1引数に"statictext"、
sliderなら"slider"を入力します。
これらは"ScriptUI"という名称らしいので "jsx ScriptUI" とかでGoogle検索すればいろいろ出てきます。
ボタン付きウィンドウを出し、ボタンクリックでコードを実行.
win = new Window("dialog", "タイトル");
okbtn = win.add("button", { width: 80, height: 25, x: 40, y: 25 }, "OK");
okbtn.onClick = function () {
alert("OKボタンが押されました");
win.close();
}
win.show();
ボタンにフォーカスを乗せる
以下のように3つのボタンを追加して、Preview ボタンに最初からフォーカスを乗せたいとします
okbtn = win.add("button", { width: 80, height: 25, x: 25, y: 25 }, "OK");
prbtn = win.add("button", { width: 80, height: 25, x: 115, y: 25 }, "Preview");
cnbtn = win.add("button", { width: 80, height: 25, x: 205, y: 25 }, "Cancel");
そんなときは以下のようにactiveにtrueを入れればOK
okbtn.active = false;
prbtn.active = true;
cnbtn.active = false;
その他
選択ダイアログ表示
windowtest.jsx
folder = Folder.selectDialog("テキスト");
folder = Folder.selectDialog("テキスト");
セーブダイアログ表示
savename = File.saveDialog("保存するファイル名を入れてください");
プロンプト
text = prompt("タイトル", "ここに入力");
参考にしたサイト
PhotoShopの自動処理スクリプト JSXを作成するときの参考リンクをまとめておく
http://www.1ft-seabass.jp/memo/2013/06/09/photoshop-jsx-list/
【Photoshop CS自動化作戦】
http://www.openspc2.org/book/PhotoshopCS/
PhotoshopでのWeb制作効率を向上させる「JSX」とは
http://stocker.jp/diary/photoshop-jsx/
Author And Source
この問題について(初心者がPhotoshopスクリプト(.jsx)を作ってみて得られた知識・ノウハウまとめ), 我々は、より多くの情報をここで見つけました https://qiita.com/r-ngtm/items/65f26b1f782f72b18d2a著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .