自身が躓いた部分と、解決サンプル。
目次
ドキュメントの複製でドキュメント名を指定したい
activeDocument.duplicate('temp');//複製
引数にStringを入れると、ドキュメント名になるみたい。
レイヤーの複製で、別のドキュメントに複製したい
activeDocument.activeLayer.duplicate( documentHogehoge ); //引数にドキュメントを入れるとそこに複製される activeDocument.activeLayer.duplicate( documentHogehoge.layerSets[0] ); //レイヤーセットを入れるとその中に入る
引数に親になるドキュメントやレイヤーセットを入れるといいみたい。
WEB用に保存ダイアログを出す
var idExpr = charIDToTypeID( "Expr" ); var desc15 = new ActionDescriptor(); var idUsng = charIDToTypeID( "Usng" ); var idSaveForWeb = stringIDToTypeID( "SaveForWeb" ); var desc16 = new ActionDescriptor(); desc15.putObject( idUsng, idSaveForWeb, desc16 ); executeAction( idExpr, desc15, DialogModes.ALL /*DialogModes.NO*/ );
script Listenerから。ダイアログを出すだけ。
デフォルトの設定や保存先は直前に”WEB用に保存”したものを引き継ぐ。
選択レイヤーをスマートオブジェクト化
executeAction( stringIDToTypeID( "newPlacedLayer" ), undefined, DialogModes.NO );
script Listenerから。activeDocument.activeLayerに有効
選択レイヤーをラスタライズ
var desc5 = new ActionDescriptor(); var ref4 = new ActionReference(); ref4.putEnumerated( charIDToTypeID( "Lyr " ), charIDToTypeID( "Ordn" ), charIDToTypeID( "Trgt" ) ); desc5.putReference( charIDToTypeID( "null" ), ref4 ); desc5.putEnumerated( charIDToTypeID( "What" ), stringIDToTypeID( "rasterizeItem" ), stringIDToTypeID( "layerStyle" ) );
script Listenerから。activeDocument.activeLayerに有効
.layersの中にはレイヤーとレイヤーセットが両方入っている
activeDocument.layserSets; //レイヤーセットのみ activeDocument.layers; //レイヤーとレイヤーセット
抽出時に注意する必要アリ。
Photoshopで用意されているObjectに key in するとエラーで止まるプロパティがある
for (var vLp in activeDocument){ activeDocument[vLp]; // <- error }
try{}chatch(e){}とかで回避するとよさげ。
Photoshop上でのPathは、UserNameが入らない
activeDocument.path; //"~/Desktop" など (new File(activeDocument.path)).fsName; // "~/Desktop" から、"C:\Users\(User名)\Desktop" 等の絶対パスに直せる
photoshop完結だったら問題ないが、batファイルに飛ばしたりする時こまる。
カラーモードの取得と変更で、定数が違う
//比較する時はDocumentModeを使う if(activeDocument.mode == DocumentMode.INDEXEDCOLOR){ activeDocument.changeMode(ChangeMode.RGB);//変更する時はChangeModeを使う }
どっちかにしてほしいぜ!