2014-05-09 53 views
1

我知道這與筆畫,但試圖做一個內心的陰影。 這些設置後 enter image description here蘋果腳本Photoshop應用圖層風格內陰影

我認爲的代碼是這樣的

tell application id "com.adobe.Photoshop" 
    activate 
    tell current document 
     apply layer style current layer using "73 Px Inner Shadow 15% Fill Opacity" 
    end tell 
end tell 
+0

您使用的是這個是什麼版本的Photoshop的? – CRGreen

+0

在Adobe Cloud或Photoshop中工作CC –

回答

2

我真的認爲這是最好的使用JavaScript(你可以從呼叫,當然,通過文本或文件)來完成使用相當鈍但強大的ActionDescriptor方法。最好的(可以說是唯一的)方法是下載Scripting Listener插件(請參閱:http://forums.adobe.com/message/5428603),並使用它來解析和竊取部分代碼,並將這些部分放入自己的JavaScript代碼中。然後可以使用此代碼(PS中調用的.jsx文件)或通過從AppleScript調用JS代碼。

例如,下面是一個腳本(可以在PS CC中原樣運行)從Scripting Listener日誌中直接獲取,在當前選定圖層上創建一個內部陰影,並使用以下設置:混合模式「變暗」 ,RGB顏色{111,22,3},不透明度爲44%,角55度,距離:66個像素,扼流圈:7%,尺寸:88px(下面的腳本代碼的詳細信息):

// ======================================================= 
var idsetd = charIDToTypeID("setd"); 
var desc8 = new ActionDescriptor(); 
var idnull = charIDToTypeID("null"); 
var ref4 = new ActionReference(); 
var idPrpr = charIDToTypeID("Prpr"); 
var idLefx = charIDToTypeID("Lefx"); 
ref4.putProperty(idPrpr, idLefx); 
var idLyr = charIDToTypeID("Lyr "); 
var idOrdn = charIDToTypeID("Ordn"); 
var idTrgt = charIDToTypeID("Trgt"); 
ref4.putEnumerated(idLyr, idOrdn, idTrgt); 
desc8.putReference(idnull, ref4); 
var idT = charIDToTypeID("T "); 
var desc9 = new ActionDescriptor(); 
var idgagl = charIDToTypeID("gagl"); 
var idAng = charIDToTypeID("#Ang"); 
desc9.putUnitDouble(idgagl, idAng, 55.000000); 
var idScl = charIDToTypeID("Scl "); 
var idPrc = charIDToTypeID("#Prc"); 
desc9.putUnitDouble(idScl, idPrc, 100.000000); 
var idIrSh = charIDToTypeID("IrSh"); 
var desc10 = new ActionDescriptor(); 
var idenab = charIDToTypeID("enab"); 
desc10.putBoolean(idenab, true); 
var idMd = charIDToTypeID("Md "); 
var idBlnM = charIDToTypeID("BlnM"); 
var idDrkn = charIDToTypeID("Drkn"); 
desc10.putEnumerated(idMd, idBlnM, idDrkn); 
var idClr = charIDToTypeID("Clr "); 
var desc11 = new ActionDescriptor(); 
var idRd = charIDToTypeID("Rd "); 
desc11.putDouble(idRd, 111.002197); 
var idGrn = charIDToTypeID("Grn "); 
desc11.putDouble(idGrn, 21.999664); 
var idBl = charIDToTypeID("Bl "); 
desc11.putDouble(idBl, 3.003845); 
var idRGBC = charIDToTypeID("RGBC"); 
desc10.putObject(idClr, idRGBC, desc11); 
var idOpct = charIDToTypeID("Opct"); 
var idPrc = charIDToTypeID("#Prc"); 
desc10.putUnitDouble(idOpct, idPrc, 44.000000); 
var iduglg = charIDToTypeID("uglg"); 
desc10.putBoolean(iduglg, true); 
var idlagl = charIDToTypeID("lagl"); 
var idAng = charIDToTypeID("#Ang"); 
desc10.putUnitDouble(idlagl, idAng, 120.000000); 
var idDstn = charIDToTypeID("Dstn"); 
var idPxl = charIDToTypeID("#Pxl"); 
desc10.putUnitDouble(idDstn, idPxl, 66.000000); 
var idCkmt = charIDToTypeID("Ckmt"); 
var idPxl = charIDToTypeID("#Pxl"); 
desc10.putUnitDouble(idCkmt, idPxl, 7.000000); 
var idblur = charIDToTypeID("blur"); 
var idPxl = charIDToTypeID("#Pxl"); 
desc10.putUnitDouble(idblur, idPxl, 88.000000); 
var idNose = charIDToTypeID("Nose"); 
var idPrc = charIDToTypeID("#Prc"); 
desc10.putUnitDouble(idNose, idPrc, 0.000000); 
var idAntA = charIDToTypeID("AntA"); 
desc10.putBoolean(idAntA, false); 
var idTrnS = charIDToTypeID("TrnS"); 
var desc12 = new ActionDescriptor(); 
var idNm = charIDToTypeID("Nm "); 
desc12.putString(idNm, "Linear"); 
var idShpC = charIDToTypeID("ShpC"); 
desc10.putObject(idTrnS, idShpC, desc12); 
var idIrSh = charIDToTypeID("IrSh"); 
desc9.putObject(idIrSh, idIrSh, desc10); 
var idLefx = charIDToTypeID("Lefx"); 
desc8.putObject(idT, idLefx, desc9); 
executeAction(idsetd, desc8, DialogModes.NO); 

////////////////end script/// 

這有助於澄清一些隱藏代碼代表:http://www.pcpix.com/photoshop/char.htm

[編輯2017年5月]上面的鏈接已死亡。現在的信息生活在https://pastebin.com/h9bK3m8D和原始是通過「迴歸機」存檔:https://web-beta.archive.org/web/20140709161028/http://www.pcpix.com/photoshop/char.htm

如果你去這條路線(並且真的,我認爲它是目前唯一的方式來獲得這樣的一級控制某些行動),你應該知道日誌需要在桌面上生存,並且不分青紅皁白地填滿,所以我最終會定期清空它(和/或關掉它)。我意識到你在AS中可能比在JS中更舒服,但是如果你學習如何編寫JS腳本(或者甚至使用AS來編寫它們),那麼你變得幾乎是無所不能的(並且擁有巨大的權力是非常重要的)。有時你可以取出部分日誌編寫的代碼,並使代碼更「高效」,但是(很明顯,也許)錯誤可能會導致代碼和一般錯誤發生。

對於傳輸模式,stringIDToTypeID()方法可能最好使用charIDToTypeID()方法,而不是使用charIDToTypeID()方法。沒有深入理解,我只是說它更容易。只需使用傳輸模式的「駝峯」的版本,一拉:

var idDrkn = stringIDToTypeID("darken"); 

//changed variable name to better reflect a generic 
var transferModeID = stringIDToTypeID("colorDodge"); 
desc10.putEnumerated(idMd, idBlnM, transferModeID); 
+0

需要仔細閱讀,稍後纔會回到此步驟 –