\r\n\r\n
Photoshopは画像編集に最適なツールで、私たちが愛用しているのは周知の事実です。以前、簡単なロゴのデザイン方法と、露出オーバーの写真を修正する方法を紹介しました。
Photoshopのアクションをご存じでしょうか。タスクを自動化するための簡単な方法を提供します。Photoshopスクリプトは、acti***よりも少し強力で、acti***ではできない、実行時にスクリプトの動作を変更する機能を備えています。
このスクリプトは、シンプルで強力な言語であるJavaScriptで書かれているので、複雑に聞こえるかもしれませんが、ご安心ください。
GIMPのファンやPhotoshopにお金をかけたくない人は、スクリプトを使ってGIMPを自動化するガイドをご覧ください。
スクリプトを記述する際には、ExtendScriptツールボックスを使用することができます。使わなくても、好きなテキストエディタ(私はSublime textが好きです)を使えばいいのですが、このツールボックスを使うことで多くの利点があります。最大の利点は、ブレークポイントを設定できることで、コードのデバッグやバグの特定が非常に容易になります。
ExtendScriptツールキットは、Creative Cloudのサブスクリプションに含まれていますので、Creative Cloudアプリケーションまたは上記のウェブサイトからインストールを行ってください。
インストール後、ツールボックスを開くと、このやや時代遅れのインターフェースが表示されます。
最初のスクリプトのコードをコピーして、左のメイン・コード・ウィンドウに貼り付けてください。
current_document = app.activeDocument;new_width = 670;current_document.resizeImage( UnitValue(new_width, 'px'), null, null, ResampleMethod.BICUBIC);このコードが何をするのか、分析してみましょう。カレントドキュメント変数には、Photoshopのアクティブドキュメントオブジェクトが格納されます。app.activeDocument のアプリケーション構文を使用します。このコードは、Photoshopを実行するためのドキュメントが開かれていない場合、例外を発生させます。例外は、コードの実行を停止する方法です。ドキュメントがない場合、スクリプトを続行することはできません
new \ width変数には、新しいドキュメントに必要な幅が格納されます。
最後に、resizeImageメソッドで画像のサイズを変更します。カレントドキュメント変数を介してアクセスする必要があります。新しい幅(UnitValueメソッドでピクセルに変換)とリサンプリング方法BICUBICを渡す必要があります。
使用できるリサンプリング方法は、主に5つあります。これらはいずれも速度や品質に差があるので、使い分けが可能です(ただし、ほとんどの場合、ダブルキュービックカーブがよいでしょう)。以下は、その違いの概要です。
コードで使用する場合は、大文字にすることを忘れないでください。
コードを理解したところで、いよいよ実行です!ドキュメントだけでなく、Photoshopも開いていることを確認してください。
ExtendScript Toolkitの上部で、ターゲットドロップダウンメニュー(左上)をExtendScript Toolkit CCからAdobe Photoshop CC 2017(または任意の特定のバージョンのPhotoshop)に変更します。他のAdobeアプリケーション用のスクリプトを作成している場合は、これをそれらに変更することができます。
ここで、コードの右上にある「ターゲット」のドロップダウンリストの右側にある「再生」ボタンを押します。
すべてが正しく動作していれば、ドキュメントのサイズが変更されています(保存するのを忘れないでください)。ツールボックスの右上にあるJavaScriptコンソールに、スクリプトの出力が表示されます。出力がないため、Result:Undefinedが表示されます。
問題が発生した場合(例外が発生した場合など)、コードは実行されず、問題のおおよその位置にオレンジ色のバーが表示されます。
単純なタイプミスの可能性もありますので、スクリプトを停止(右上のコントロール>停止ボタン)した後、再確認してください。
これでコードが正しく動作するようになったので、いよいよPhotoshopに追加してみましょう。
ツールボックスの「ファイル >保存」で、スクリプトを適当な場所に適当な名前で保存してください。デフォルトでは、Adobe Scripts フォルダになります。なお、スクリプトの末尾は.jsx形式である必要があります。
Photoshopの「ファイル >スクリプト >スクリプト・イベント・マネージャ」を開きます。Enable events to run scripts/actions "チェックボックスをオンにします。
このインターフェイスを有効にすると、特定のアクションが発生したときに実行されるように既存のスクリプトを設定することができます。
Script'を選択し、'Browse'を選択します。スクリプトを選択し、スクリプトのトリガーとなるイベントを選択します。
また、このメニューでは、以前に設定したスクリプトの編集や削除も可能です。
スクリプトをアクションにバインドしないのであれば、設定する方が簡単です。ファイル」 > 「スクリプト」 > 「参照」に進みます。スクリプトに移動してopenを押すと、スクリプトがすぐに実行されます。
このスクリプトメニューに自分のスクリプトを表示したい場合は、適切なフォルダにコピーする必要があります。PhotoshopのPresets> Scriptsフォルダーにあります。
コピー後、Photoshopを再起動します。再起動後、ファイル> スクリプトメニューにスクリプトが表示されます。
Photoshopのスクリプトを理解したところで、いよいよコードの改良に入ります。
このコードは、画像を670px(またはあなたが変更したサイズ)にリサイズするためにうまく機能しますが、より良いものにすることができます。幸いなことに、JavaScriptは非常に柔軟な言語です
新しいサイズより小さい画像はリサイズされないように、コードを修正しましょう。
current_document = app.activeDocument;new_width = 670;if(current_document.width > new_width) { current_document.resizeImage( UnitValue(new_width, 'px'), null, null, ResampleMethod.BICUBIC );}ここでの変更は1つだけです。resizeメソッドの周りにif文を記述します。現在のドキュメント幅 (current_document_width 経由) が新しい幅より小さい場合、リサイズは行わない。
これにより、小さな画像が拡大され、画質が低下することがありません。
ツールボックスでコードを入力し始めると、有効な変更点、呼び出すべきメソッド、アクセスすべきプロパティの候補が表示されます。これはとても便利なので、ぜひ活用してください。
最後の変化は
current_document = app.activeDocument; // Get the active documentnew_width = 670; // new width to ressize toif(current_document.width > new_width) { // if document is larger than new size current_document.resizeImage( UnitValue(new_width, 'px'), null, null, ResampleMethod.BICUBICSHARPER );}current_document.activeLayer.autoContrast(); // Apply contrastcurrent_doc.activeLayer.applySharpen(); // Apply Sharpenこのコードには、すべてのコードが持つべきものであり、将来的に役立つであろうコメントが含まれるようになりました。
リサンプリング方式をダブルトリプルシャープネスに変更し、画像を縮小した際により良い結果が得られるようになりました。
最後にコントラストとシャープネスをかける。
もう、Photoshopで何かを自動化するのに必要なことはすべて知っているはずです!Photoshopでできることなら、おそらくできます。 photoshopapiは多くの機能へのアクセスを提供し、そのドキュメントには、アクセスできるほぼすべての機能が説明されています。
もちろん、今日の例は基本的なものですが、核となる詳細な部分、つまりあなたのニーズに合わせて実装できるスクリプトを網羅しています。
今日は何か新しい発見がありましたか? また、あなたのお気に入りの遊びは何ですか?
画像引用元:WhiteMocca via Shutterstock.com