在为Photoshop CS3编写脚本之前,我正在做一些研究。我想用Photoshop在Photoshop中编写脚本。
我查看了Photoshop JavaScript指南,但我找不到任何方法来获取图层的图层样式信息(笔触,渐变,外部发光等)。
有一种方法可以设置图层样式,但我找不到任何可以让您获取信息的内容。
我只有Photoshop CS3,所以我正在寻找适合的解决方案。
答案 0 :(得分:2)
最近在Photoshop的JSON Action Manager脚本库中添加了一个新模块jamStyles。
除此之外,它定义了两个JavaScript函数 jamStyles.getLayerStyle 和 jamStyles.setLayerStyle ,它们提供了对获取和设置当前图层样式的支持(两者都是混合选项和图层效果)使用JSON对象。
还提供了名为Get Layer Style的实用程序脚本。
答案 1 :(得分:1)
打开Adobe ExtendScript Toolkit。在菜单中转到帮助>对象模型查看器(或类似的,我的是德语)。
在“浏览器”侧面标签中的对象模型浏览器中选择Photoshop。现在,您可以使用右上角的搜索字段进行搜索。
请参阅下图,了解ArtLayer
的定义和ArtLayer.applyStyle()
:
http://i.stack.imgur.com/UEmj6.png
搜索一下,它比adobe的文档要好得多。
答案 2 :(得分:1)
我希望我不会太迟,我发布你的帖子,因为我有同样的问题,我在http://www.rags-int-inc.com/PhotoTechStuff/CollageTemplate/index.html找到了解决方案。这家伙有一个名为“图层效果选项”的脚本。您可以在底部下载源代码。
嗯,它只是一个应用效果的面板,但如果您浏览代码,则可以提取所需内容。
以下是将活动图层应用于描边效果的一些示例(我需要的)
function newStrokeEffect(strokeSize, strokeColor, strokePosition) {
var effectDescriptor = new ActionDescriptor();
var effectColor = new ActionDescriptor();
var strokeOpacity = 100.0; // 0 - 100 %
var strokeBlend = "Nrml"; // Normal[Nrml], ColorBurn[CBrn], SoftLight[SftL}, Color[Clr ]
effectDescriptor.putBoolean(charIDToTypeID("enab"), true);
effectDescriptor.putEnumerated(charIDToTypeID("Styl"), charIDToTypeID("FStl"), charIDToTypeID(strokePosition));
effectDescriptor.putEnumerated(charIDToTypeID("PntT"), charIDToTypeID("FrFl"), charIDToTypeID("SClr"));
effectDescriptor.putEnumerated(charIDToTypeID("Md "), charIDToTypeID("BlnM"), charIDToTypeID(strokeBlend));
effectDescriptor.putUnitDouble(charIDToTypeID("Opct"), charIDToTypeID("#Prc"), strokeOpacity);
effectDescriptor.putUnitDouble(charIDToTypeID("Sz "), charIDToTypeID("#Pxl"), strokeSize);
effectColor.putDouble(charIDToTypeID("Rd "), strokeColor.rgb.red);
effectColor.putDouble(charIDToTypeID("Grn "), strokeColor.rgb.green);
effectColor.putDouble(charIDToTypeID("Bl "), strokeColor.rgb.blue);
effectDescriptor.putObject(charIDToTypeID("Clr "), charIDToTypeID("RGBC"), effectColor);
return(effectDescriptor);
}
var tmpC = new SolidColor();
tmpC.rgb.hexValue = "FF00FF";
var layerOptions = new ActionDescriptor();
var refr01 = new ActionReference();
var layerProperties = new ActionDescriptor();
layerOptions.putUnitDouble(charIDToTypeID("Scl "), charIDToTypeID("#Prc"), 400.0);
var layerEffects = newStrokeEffect(2, tmpC, "InsF");
layerOptions.putObject(charIDToTypeID("FrFX"), charIDToTypeID("FrFX"), layerEffects);
refr01.putProperty(charIDToTypeID("Prpr"), charIDToTypeID("Lefx"));
refr01.putEnumerated(charIDToTypeID("Lyr "), charIDToTypeID("Ordn"), charIDToTypeID("Trgt"));
layerProperties.putReference(charIDToTypeID("null"), refr01);
layerProperties.putObject(charIDToTypeID("T "), charIDToTypeID("Lefx"), layerOptions);
try {
executeAction(charIDToTypeID("setd"), layerProperties, DialogModes.NO);
} catch(ex) {
if (ex != "Error: User cancelled the operation")
alert(scriptName + " newLayerEffect() exception caught? line[" + ex.line + "] " + ex);
}
我不知道所有线条的确切含义(主要是复制和粘贴),但它有效:-)(仅在Photoshop CS5上测试过)