在爲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),我被告知必須編寫腳本。開始了漫長的沮喪之旅,放棄了。 –