Photoshop Scripting のスニペット集
このページは、Photoshop Scripting (JavaScript) のスニペットなどをまとめる予定のページです。
目次
注意
- コードのライセンスは CC0 (クレジット表示不要、改変可、商用可) です。
- Adobe Photoshop Scripting や Adobe Photoshop CC自動化作戦 も参考にしてください。
スニペット
ファイルを開く
const file = new File('/path/to/file.psd');
open(file);
/path/to/file.psd
は必要なファイルパスに変更します。
ファイルを開く (テキスト)
const file = new File('~/test.txt');
file.open('r');
while (!file.eof) {
line = file.readln(); // 1行読み込む
// 何か処理
}
~/test.txt
は必要なファイルパスに変更します。
複製保存 (PSD)
const saveFile = new File('/path/to/file.psd');
const options = new PhotoshopSaveOptions();
activeDocument.saveAs(saveFile, options, true);
/path/to/file.psd
は必要なファイルパスに変更します。
スクリプトのパス
const filename = $.fileName;
const dir = (new File($.fileName)).parent;
単位の変更
ダイアログ非表示
const startDisplayDialogs = displayDialogs;
displayDialogs = DialogModes.NO; // 非表示
// なにか処理
displayDialogs = startDisplayDialogs; // 戻す
レイヤーの取得
const layer = activeDocument.artLayers.getByName('レイヤー名');
レイヤーの幅・高さの取得
const bounds = layer.bounds;
const layerWidth = bounds[2] - bounds[0]; // 幅
const layerHeight = bounds[3] - bounds[1]; // 高さ
テキストレイヤーにテキスト設定
layer.textItem.contents = 'テキスト\r改行テキスト';
レイヤースタイルの適用
layer.applyStyle('スタイル名');
ユーティリティ関数
レイヤーの位置の移動
/**
* レイヤーを移動します。(左上起点)
* @param {ArtLayer} layer レイヤー
* @param {number} x X座標
* @param {number} y Y座標
*/
function layerMoveTo(layer, x, y) {
const bounds = layer.bounds;
layer.translate(-bounds[0] + x, -bounds[1] + y);
}
/**
* レイヤーを移動します。(左下起点)
* @param {ArtLayer} layer レイヤー
* @param {number} x X座標
* @param {number} y Y座標
*/
function layerMoveToFromBottomLeft(layer, x, y) {
const docHeight = activeDocument.height.value;
const bounds = layer.bounds;
const layerHeight = bounds[3] - bounds[1];
layer.translate(-bounds[0] + x, -bounds[1] + docHeight - layerHeight - y);
}
/**
* レイヤーを移動します。(中央下起点)
* @param {ArtLayer} layer レイヤー
* @param {number} x X座標
* @param {number} y Y座標
*/
function layerMoveToFromBottomCenter(layer, x, y) {
const docWidth = activeDocument.width;
const docheight = activeDocument.height;
const bounds = layer.bounds;
const layerWidth = bounds[2] - bounds[0];
const layerHeight = bounds[3] - bounds[1];
layer.translate(-bounds[0] + docWidth / 2 - layerWidth / 2 + x, -bounds[1] + docheight - layerHeight - y);
}