在为Photoshop CS3编写脚本之前,我正在做一些研究。我想用JavaScript在Photoshop中编写脚本。如何在Photoshop中访问图层样式信息?
我已经浏览了Photoshop JavaScript指南,但是我找不到任何方法来获取图层的图层样式信息(描边,渐变,外部发光等)。
有一种方法来设置图层样式,但我一直没有找到任何可以让您获取信息的方法。
我只有Photoshop CS3,所以我正在寻找一个适合该解决方案。
在为Photoshop CS3编写脚本之前,我正在做一些研究。我想用JavaScript在Photoshop中编写脚本。如何在Photoshop中访问图层样式信息?
我已经浏览了Photoshop JavaScript指南,但是我找不到任何方法来获取图层的图层样式信息(描边,渐变,外部发光等)。
有一种方法来设置图层样式,但我一直没有找到任何可以让您获取信息的方法。
我只有Photoshop CS3,所以我正在寻找一个适合该解决方案。
打开Adobe ExtendScript工具包。在菜单中,转到帮助>对象模型查看器(或类似的,我的是德语)。
在“浏览器”侧面选项卡中的对象模型浏览器中选择Photoshop。现在您可以使用右上角的搜索栏进行搜索。
请参见下面的图像ArtLayer
的deifinition和ArtLayer.applyStyle()
:
http://i.stack.imgur.com/UEmj6.png
搜索周围,它比Adobe的文档要好得多。
伟大的提示!这比愚蠢的PDF更容易浏览。但是,我仍然无法找到访问图层样式信息的方法。感谢您的回应! –
ExtendScript对象浏览器很糟糕。它们没有包含SolidColor作为记录的类之一。 – thenonhacker
我希望我不会太迟,因为我遇到了同样的问题,所以我发现了一个解决方案http://www.rags-int-inc.com/PhotoTechStuff/CollageTemplate/index.html。这个人有一个叫做“Layer Effects Options”的脚本。您可以在底部下载源代码。
嗯,它只是一个面板应用效果,但如果你浏览代码,你可以提取你所需要的。
这里是施加中风效果的活性层
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);
}
我不知道所有线路的确切含义(它主要是复制&粘贴)有点exsample(我所需要的),但它的工作原理:-)(仅测试了它的Photoshop CS5)
一个新的模块jamStyles最近已加入到JSON操作管理器脚本库的Photoshop。
除其他东西,它定义两个JavaScript函数jamStyles.getLayerStyle和jamStyles.setLayerStyle,其提供用于获取和设置当前层样式支撑件(两者混合选项和层效果)使用JSON目的。
还提供了一个名为Get Layer Style的实用程序脚本。
最后经过几个小时的搜索,这一个工程。返回我所需要的:'{“blendOptions”:{...},“layerEffects”:{...}} - 真棒! –
是的,Adobe的文档糟透了。 –
哈哈,对于如何设置不同图层样式(渐变颜色,笔触宽度等)的选项没有任何线索。 –
我只需要左手复制/粘贴PS(ctr-ins/shift-ins),我被告知必须编写脚本。开始了漫长的沮丧之旅,放弃了。 –