javascript,Photoshop [javascript]photoshopの独自GUI、ボタンを押したら実行する記述方法

[javascript]photoshopの独自GUI、ボタンを押したら実行する記述方法

gui_photoshop_topimage

前回作ったダイアログウィンドウのボタンやリストの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 = ()
キャンセルボタンが押された場合


実行:


複製しないで ぼかし(ガウス)を実行


複製して ダスト&スクラッチ を実行

まとめ

特別難しいい事はしていません。
今回やったことは、
ボタンが押されたらfunction()で請け負ってvalueで値を受けとり、
値を元に選択をして、選択した方の効果を実行する。

これだけです。

何かしら有益な情報であればと思います。




BTOパソコンの【FRONTIER】
3DCG/動画編集/そしてゲームプレイにも、高性能PCがお得な価格で購入できます

ウィンターセール\アウトレット・大特価・掘り出し物がズラリ!!/2月10日(水)15時まで
■第10世代 intel Core i7-10700KF + NVIDIA RTX 3070 モデルが159,800円!!
■第10世代 intel Core i7-10700F + NVIDIA GTX 1660 モデルが99,800円!! 
他 お買い得PCが沢山!全て台数限定なので売り切れる前に是非
最新GPUも格安構成も自由に選べる!パソコン買うならBTOの【FRONTIER】


【デジハリONLINEの 基礎動画 + AdobeCC一年ライセンス のお得プラン】

デジタルハリウッドのオンラインCGスクール「デジハリONLINE」が提供する、60時間の基礎動画とAdobe creative cloudの一年版ライセンスがパッケージされた、お得な講座プラン
「Adobeマスター講座」が36,346円(税別)
PhotoshopやIllustratorなどAdobe製品を超お得な価格で利用できてコスパ最強。

▶︎ デジハリONLINE講座申込

▶︎基礎動画教材付きAdobe Creative Cloudを年額36,346円(税別)のお得な価格で使用する方法


 
 

Twitter Facebook Pocket LINE はてブ

おすすめの関連記事
コチラの記事も読まれています
あわせてよく読まれている記事