К сожалению, нет простого способа добавить стили слоя.
Существует .applyStyle("Puzzle (Image)")
, но другие стили не включены в документацию, и я не смог найти другие стили в любом месте.
Таким образом, вы должны использовать обходной путь (сложный и сложный процесс).
Шаг 1 (пропустите, если вы хотите готовое решение)
Прежде всего, вам нужно будет выполнить действие (добавить внешнее свечениев слой), а затем конвертировать в скрипт .jsx.
Вам необходимо использовать этот скрипт для конвертации: http://ps -scripts.cvs.sourceforge.net / viewvc / ps-scripts / xtools / apps/ActionToJavascript.jsx?revision=1.29
Запустите его из Ps или из ExtendScript, выберите свое действие и сохраните его.
Шаг 2
Во вновь созданномСценарий, вы увидите ужасный и нечитаемый код, он будет работать сразу же, однако вам нужно будет сделать функцию, если вы хотите использовать другие настройки (цвет, прозрачность, режим наложения и т. д.).
Вотчистая версия.
cTID = function(s){ return app.charIDToTypeID(s); };
sTID = function(s){ return app.stringIDToTypeID(s); };
// Add Style: Glow
function addStyleGlow( R, G, B, blendingMode, opacity, spread, size ){
var desc1 = new ActionDescriptor();
var ref1 = new ActionReference();
ref1.putProperty(cTID('Prpr'), cTID('Lefx'));
ref1.putEnumerated(cTID('Lyr '), cTID('Ordn'), cTID('Trgt'));
desc1.putReference(cTID('null'), ref1);
var desc2 = new ActionDescriptor();
desc2.putUnitDouble(cTID('Scl '), cTID('#Prc'), 100);
// Glow color
var desc4 = new ActionDescriptor();
var rgb = new Array();
desc4.putDouble(cTID('Rd '), R);
desc4.putDouble(cTID('Grn '), G);
desc4.putDouble(cTID('Bl '), B);
// Blending mode of the effect
var desc3 = new ActionDescriptor();
desc3.putBoolean(cTID('enab'), true);
desc3.putEnumerated( cTID('Md '), cTID('BlnM'), cTID(blendingMode) );
desc3.putObject(cTID('Clr '), sTID("RGBColor"), desc4);
// Opacity
desc3.putUnitDouble(cTID('Opct'), cTID('#Prc'), opacity);
desc3.putEnumerated(cTID('GlwT'), cTID('BETE'), cTID('SfBL'));
// Spread
desc3.putUnitDouble(cTID('Ckmt'), cTID('#Pxl'), spread);
// Size
desc3.putUnitDouble(cTID('blur'), cTID('#Pxl'), size);
// Noise
desc3.putUnitDouble(cTID('Nose'), cTID('#Prc'), 0);
// Quality: Jitter
desc3.putUnitDouble(cTID('ShdN'), cTID('#Prc'), 0);
desc3.putBoolean(cTID('AntA'), true);
var desc5 = new ActionDescriptor();
desc5.putString(cTID('Nm '), "Linear");
desc3.putObject(cTID('TrnS'), cTID('ShpC'), desc5);
// Quality: Range
desc3.putUnitDouble(cTID('Inpr'), cTID('#Prc'), 50);
desc2.putObject(cTID('OrGl'), cTID('OrGl'), desc3);
desc1.putObject(cTID('T '), cTID('Lefx'), desc2);
executeAction(cTID('setd'), desc1, DialogModes.NO);
}; // End of Add Style: Glow
Шаг 3
Вам понадобитсядругой файл сценария для вызова этой функции, поместите его в ту же папку (замените «antoxa_myGlow.jsx» на имя вашего сценария)
//@include "antoxa_myGlow.jsx"
// R, G, B, blend mode, opacity, spread, size
addStyleGlow(255, 255, 54, 'Nrml', 75, 0, 5);
В настоящее время он будет работать только с одним выбранным слоем,если вы выберете несколько слоев, это даст вам ошибку.Я пока не знаю, как применить функцию к нескольким выбранным слоям.