Photoshopでは自由にレイヤーを移動させることができますが、座標を正確に指定して移動させることができません。今回は、レイヤーを指定座標に移動させるスクリプトです。
最初のスクリプトは、アクティブになっているレイヤーを指定した座標(100, 50)に移動させるものです。
なお、Photoshopは左上が座標の原点になっており、右下に向かって座標値が大きくなります。(Illustratorは左下が原点で右上に向かって座標値が大きくなります。Illustratorは数学座標と同じです)
最初のスクリプトは、アクティブになっているレイヤーを指定した座標(100, 50)に移動させるものです。
なお、Photoshopは左上が座標の原点になっており、右下に向かって座標値が大きくなります。(Illustratorは左下が原点で右上に向かって座標値が大きくなります。Illustratorは数学座標と同じです)
saveUnit = preferences.rulerUnits;
preferences.rulerUnits = Units.PIXELS;
layObj = activeDocument.activeLayer;
layX = parseInt(layObj.bounds[0]);
layY = parseInt(layObj.bounds[1]);
layObj.translate(-layX, -layY);
x = 100;
y = 50;
layObj.translate(x, y);
preferences.rulerUnits = saveUnit;
移動させる座標値を変更するには
x = 100;
y = 50;
の値を修正してください。座標値が固定されていることは少ないでしょうから、任意の位置に移動させるには以下のスクリプトを使ってください。以下のスクリプトでは、X,Y座標値を入力できるようになっています。
saveUnit = preferences.rulerUnits;
preferences.rulerUnits = Units.PIXELS;
layObj = activeDocument.activeLayer;
layX = parseInt(layObj.bounds[0]);
layY = parseInt(layObj.bounds[1]);
layObj.translate(-layX, -layY);
x = parseInt(prompt("X座標", 100));
y = parseInt(prompt("Y座標", 50));
layObj.translate(x, y);
preferences.rulerUnits = saveUnit;
アクティブになっているレイヤーではなく、全てのレイヤーをまとめて同じ座標に移動させたい場合には、以下のスクリプトになります。
saveUnit = preferences.rulerUnits;
preferences.rulerUnits = Units.PIXELS;
x = parseInt(prompt("X座標", 100));
y = parseInt(prompt("Y座標", 50));
for (i=0; i< activeDocument.layers.length; i++)
{
layObj = activeDocument.layers[i];
if (!layObj.isBackgroundLayer)
{
layX = parseInt(layObj.bounds[0]);
layY = parseInt(layObj.bounds[1]);
layObj.translate(-layX, -layY);
layObj.translate(x, y);
}
}
preferences.rulerUnits = saveUnit;
【古籏一浩】openspc@po.shiojiri.ne.jp
< http://www.openspc2.org/
>
裁判員制度について講習みたいなのがあったので行ってきましたが……。これは予想以上に駄目な予感。とりあえず、以下のページにまとめました。
< http://www.openspc2.org/saiban/index.html
>
preferences.rulerUnits = Units.PIXELS;
layObj = activeDocument.activeLayer;
layX = parseInt(layObj.bounds[0]);
layY = parseInt(layObj.bounds[1]);
layObj.translate(-layX, -layY);
x = 100;
y = 50;
layObj.translate(x, y);
preferences.rulerUnits = saveUnit;
移動させる座標値を変更するには
x = 100;
y = 50;
の値を修正してください。座標値が固定されていることは少ないでしょうから、任意の位置に移動させるには以下のスクリプトを使ってください。以下のスクリプトでは、X,Y座標値を入力できるようになっています。
saveUnit = preferences.rulerUnits;
preferences.rulerUnits = Units.PIXELS;
layObj = activeDocument.activeLayer;
layX = parseInt(layObj.bounds[0]);
layY = parseInt(layObj.bounds[1]);
layObj.translate(-layX, -layY);
x = parseInt(prompt("X座標", 100));
y = parseInt(prompt("Y座標", 50));
layObj.translate(x, y);
preferences.rulerUnits = saveUnit;
アクティブになっているレイヤーではなく、全てのレイヤーをまとめて同じ座標に移動させたい場合には、以下のスクリプトになります。
saveUnit = preferences.rulerUnits;
preferences.rulerUnits = Units.PIXELS;
x = parseInt(prompt("X座標", 100));
y = parseInt(prompt("Y座標", 50));
for (i=0; i< activeDocument.layers.length; i++)
{
layObj = activeDocument.layers[i];
if (!layObj.isBackgroundLayer)
{
layX = parseInt(layObj.bounds[0]);
layY = parseInt(layObj.bounds[1]);
layObj.translate(-layX, -layY);
layObj.translate(x, y);
}
}
preferences.rulerUnits = saveUnit;
【古籏一浩】openspc@po.shiojiri.ne.jp
< http://www.openspc2.org/
>
裁判員制度について講習みたいなのがあったので行ってきましたが……。これは予想以上に駄目な予感。とりあえず、以下のページにまとめました。
< http://www.openspc2.org/saiban/index.html
>
- 改訂第4版 JavaScript ポケットリファレンス
- 古籏 一浩
- 技術評論社 2006-10-18
- おすすめ平均
- JavaScriptを使ったプロジェクトのお供に是非
- JavaScript仮免者以上の方へ
- バランスの良いバイブル
- 中級者向けです。