このページの本文へ

Photoshopを超えた!?BridgeとJSで作る画像フィルター (4/6)

2010年02月22日 11時00分更新

文●古籏一浩

  • この記事をはてなブックマークに追加
本文印刷

ファイルオープンダイアログと保存ダイアログ

 サンプル02は特定の場所にある特定の画像ファイルに対して、フィルター処理を適用するスクリプトでした。保存先や保存ファイル名も固定されているので、このままだと使いにくく不便です。そこで、処理を適用する元の画像と保存先のパス/ファイル名を自由に選択できるように改良しましょう。

 改良版では、ファイルオープンダイアログを表示してユーザーに任意のパス/ファイル名を選択してもらうことにします。ファイルオープンダイアログはFile.openDialog()とするだけで表示されます。最初の引数にダイアログ上に表示するメッセージを、2番目の引数に表示する画像の種類(WindowsとMacで方法が異なる)を、3番目の引数にファイルの複数選択の可否(trueで複数選択、falseで1つだけ選択)を指定します。2番目の引数はWindowsとMacでは異なるため詳しい説明は省略しますが、Windowsでは"*.jpg"とするとJPEGファイルだけが選択できるようになります。

 File.openDialog()はファイルが選択された場合はファイルオブジェクトを返します(複数選択可能な場合は配列を返します)。また、キャンセルボタンが押された場合にはnullを返すようになっています。

 最後に、フィルター処理が完了した後に保存ダイアログを表示します。ファイル保存ダイアログはFile.saveDialog()を使います。最初の引数にダイアログに表示する文字を指定します。File.saveDialog()はキャンセルボタンが押された場合、nullを返します。

 サンプル03は、サンプル02でファイル名を指定していた部分を、ダイアログによる指定に置き換えたものです。なお、サンプル03ではキャンセルボタンが押された時の処理は入っていません。

ファイルオープンダイアログが表示されます

ファイルオープンダイアログが表示されます

処理が終わるとファイル保存ダイアログが表示されます

処理が終わるとファイル保存ダイアログが表示されます


●サンプル03


#target "Bridge"
var imgPath = File.openDialog("画像ファイルを選択してください", "", false);
var myCanvas = new BitmapData(imgPath);
for(var y=0; y<myCanvas.height; y++){
    for(var x=0; x<myCanvas.width; x++){
        var colorObj = new Color(myCanvas.getPixel(x, y));
        var R = colorObj.red;
        var G = colorObj.green;
        var B = colorObj.blue;
        R = R  * 2;
        if (R > 255) R = 255;
        G = Math.floor(G / 2);
        B = Math.floor(B / 2);
        var myColor = new Color(R, G, B);
        myCanvas.setPixel(x,y, myColor);
    }
}
var savePath = File.saveDialog("保存先とJPEG保存ファイル名を指定してください")
myCanvas.exportTo(savePath, 100);


この連載の記事

一覧へ

この記事の編集者は以下の記事をオススメしています