Photoshop CS/CS2でテキストレイヤーのみレイヤーパレットに表示されているレイヤーに色を付けるものです。以下のスクリプトはドキュメントのレイヤーパレットに表示されているレイヤーの色を赤色にするものです。
setLayerColor(colorName);
function setLayerColor(colorNameString)
{
var id21 = charIDToTypeID( "setd" );
var desc4 = new ActionDescriptor();
var id22 = charIDToTypeID( "null" );
var ref2 = new ActionReference();
var id23 = charIDToTypeID( "Lyr " );
var id24 = charIDToTypeID( "Ordn" );
var id25 = charIDToTypeID( "Trgt" );
ref2.putEnumerated( id23, id24, id25 );
desc4.putReference( id22, ref2 );
var id26 = charIDToTypeID( "T " );
var desc5 = new ActionDescriptor();
var id27 = charIDToTypeID( "Clr " );
var id28 = charIDToTypeID( "Clr " );
var id29 = charIDToTypeID( colorNameString ); // レイヤーカラー
desc5.putEnumerated( id27, id28, id29 );
var id30 = charIDToTypeID( "Lyr " );
desc4.putObject( id26, id30, desc5 );
executeAction( id21, desc4, DialogModes.NO );
}
指定するレイヤーの色を変更するには最初の行の"Rd "を変更します。この文字列が色の名前になっており、以下のものが指定できます。
"Rd " | 赤色 |
"Orng" | 橙色 |
"Ylw " | 黄色 |
"Grn " | 緑色 |
"Bl " | 青色 |
"Vlt " | 紫色 |
"Gry " | 灰色 |
"None" | 白色(色なし) |
テキストレイヤーのみ色を付ける場合には以下のスクリプトになります。
colorName = "Rd ";
layObj = activeDocument.layers;
for (i=0; i<layObj.length; i++) {
if(layObj[i].kind == LayerKind.TEXT)
{
activeDocument.activeLayer = layObj[i];
setLayerColor(colorName);
}
}
function setLayerColor(colorNameString)
{
var id21 = charIDToTypeID( "setd" );
var desc4 = new ActionDescriptor();
var id22 = charIDToTypeID( "null" );
var ref2 = new ActionReference();
var id23 = charIDToTypeID( "Lyr " );
var id24 = charIDToTypeID( "Ordn" );
var id25 = charIDToTypeID( "Trgt" );
ref2.putEnumerated( id23, id24, id25 );
desc4.putReference( id22, ref2 );
var id26 = charIDToTypeID( "T " );
var desc5 = new ActionDescriptor();
var id27 = charIDToTypeID( "Clr " );
var id28 = charIDToTypeID( "Clr " );
var id29 = charIDToTypeID( colorNameString ); // レイヤーカラー
desc5.putEnumerated( id27, id28, id29 );
var id30 = charIDToTypeID( "Lyr " );
desc4.putObject( id26, id30, desc5 );
executeAction( id21, desc4, DialogModes.NO );
}
テキストレイヤーではなく他の種類のものにしたい場合には
if(layObj[i].kind == LayerKind.TEXT)
のLayerKind.TEXTを変更します。これは以下のものが指定できます。
LayerKind.BRIGHTNESSCONTRAST
LayerKind.CHANNELMIXER
LayerKind.COLORBALANCE
LayerKind.CURVES
LayerKind.GRADIENTFILL
LayerKind.GRADIENTMAP
LayerKind.HUESATURATION
LayerKind.INVERSION
LayerKind.LEVELS
LayerKind.NORMAL
LayerKind.PATTERNFILL
LayerKind.POSTERIZE
LayerKind.SELECTIVECOLOR
LayerKind.SMARTOBJECT
LayerKind.SOLIDFILL
LayerKind.TEXT
LayerKind.THRESHOLD
[
サンプルをダウンロード]