前回作ったダイアログウィンドウのボタンやリストのGUIパーツは、今の段階では押しも引いても何も反応しない只の飾りです。今回は、今はまだ只の飾り状態になってるGUIパーツを意味のあるモノにしていこうと思います。
前回の記事:
⇒[photoshop]javascriptでPhotoshopのダイアログウィンドウを表示
ボタンを押したら実行される機能
「[実行]ボタンを押すと、開いてる画像にフィルターがかかる」
これが組み込もうとしてる機能です。
そして2つ選択肢を入れようと思います。
- [実行]ボタンを押す前にラジオボタンで、複製を実行してその複製した画像にフィルターをかけるのか、もしくは、複製しない、最初から開いている画像にフィルターをかけるのか。
- 2種類のフィルターがドロップダウンリストにある、そのどちらかを選んでから[実行]ボタンを押すと、ラジオボタンで選択された画像ドキュメント、複製画像もしくは元々開かれてる画像に、選ばれたフィルターがかかる。
他には、[実行][キャンセル]ボタンを押すとウィンドウが閉じる。
あともう一つ、ウィンドウが立ち上がると、既に開いているフィルターをかける対象の画像ドキュメントのファイル名をエディットテキストの窓に表示する。
javascriptで実行部分を付け足す
var activeDocument_name = activeDocument.name;//アクティブになっているドキュメントの名前を取得
var gUIWindow = new Window('dialog','テストウィンドウ');
gUIWindow.bounds = [200,100,580,280];
gUIWindow.activeDocPnl = gUIWindow.add("panel",[10,5,370,90],"アクティブドキュメント");
gUIWindow.activeDocPnl .editText = gUIWindow.activeDocPnl .add("edittext",[10,15,345,33], activeDocument_name);
gUIWindow.activeDocPnl .editText.enabled = false gUIWindow.activeDocPnl .radiorBtn1 = gUIWindow.activeDocPnl .add("radiobutton",[10,40,200,58], "オリジナル"); gUIWindow.activeDocPnl .radiorBtn2 = gUIWindow.activeDocPnl .add("radiobutton",[10,55,200,75], "複製");
gUIWindow.activeDocPnl .radiorBtn1.value = true;
gUIWindow.dList = gUIWindow.add("dropdownlist",[15,110,365,130],["ぼかし(ガウス)20","ダスト&スクラッチ20,10"]);
gUIWindow.dList.selection = 0; gUIWindow.filterPnl = gUIWindow.add("panel",[10,90,370,140],"フィルターの処理");
gUIWindow.okBtn = gUIWindow.add("button",[80,145,175,170], "実行");
gUIWindow.cancelBtn = gUIWindow.add("button",[190,145,285,170], "キャンセル");
gUIWindow.okBtn.onClick= function()
{
if(gUIWindow.activeDocPnl.radiorBtn2.value)
{
activeDocument.duplicate();
} else{
;
} if(0 == gUIWindow.dList.selection)
{
activeDocument.activeLayer.applyGaussianBlur(20.0); //ガウス
} else if(1 == gUIWindow.dList.selection)
{
activeDocument.activeLayer.applyDustAndScratches(20,10); //ダスト&スクラッチ
} else{
;
}
gUIWindow.close();
}
gUIWindow.cancelBtn.onClick = function()
{
gUIWindow.close();
}
gUIWindow.show();
付け足した部分の説明:
GUIの部分以外の説明をします。
var activeDocument_name = activeDocument.name;
既に開かれている一番手前の画像の名前を取得します。
gUIWindow.activeDocPnl .editText = gUIWindow.activeDocPnl .add(“edittext”,[10,15,345,33], activeDocument_name);
取得した画像の名前 activeDocument_name がエディットテキストの窓に表示されるようにする。
gUIWindow.okBtn.onClick= function()
実行ボタンが押された場合
if(gUIWindow.activeDocPnl.radiorBtn2.value)
ラジオボタンの2番目がチェック。
チェックされていれば複製する。
activeDocument.duplicate();
複製する
if(0 == gUIWindow.dList.selection)
ドロップダウンリストの0番の項目が選ばれているか否か
activeDocument.activeLayer.applyGaussianBlur(20.0);
フィルタ ぼかし(ガウス) を半径20.0で実行
else if(1 == gUIWindow.dList.selection)
ドロップダウンリストの1番の項目が選ばれているか否か
activeDocument.activeLayer.applyDustAndScratches(20,10);
フィルタ ダスト&スクラッチ 半径と閾値を20と10にして実行
gUIWindow.close();
ダイアログウィンドウを閉じる
gUIWindow.cancelBtn.onClick = ()
キャンセルボタンが押された場合
実行:
複製しないで ぼかし(ガウス)を実行
複製して ダスト&スクラッチ を実行
まとめ
これだけです。
何かしら有益な情報であればと思います。
|
|
Adobeのプラチナパートナーに認定されているデジタルハリウッドのオンラインCGスクール「デジハリONLINE」が提供する「Adobeマスター講座」。
基礎動画教材とAdobe creative cloudの一年版ライセンスがセットになった、コスパ最強のパッケージプランです。
学習ノルマは一切ありません。AdobeCCだけを目的に契約してもOK!
>> デジハリONLINE「Adobeマスター講座」
|
|
BTOパソコンの草分け的ブランドFRONTIER(フロンティア) 3DCG/動画編集/ゲーム用途に合わせてCPUやGPUなどパーツを自由に選べてコスパにもこだわる方にオススメ。 |
|
|
|
|
|