簡體   English   中英

Photoshop JavaScript圖層創建

[英]Photoshop JavaScript Layer creation

您可以通過此代碼段猜測我正在嘗試做什么:

var docRef = app.activeDocument;

var layerRef = app.activeDocument.artLayers.add();
layerRef.kind = LayerKind.SOLIDFILL;

我想編寫一個填充圖層的腳本(然后指定顏色,刪除掩碼等)。 我從ExtendScript Toolkit得到了這個響應:“你只能將圖層的類改為文本或正常”

我會想到有一種方法可以將某種類型的參數傳遞給artLayersadd()方法嗎? 我錯過了一些非常簡單的事嗎? 謝謝。

我知道這可以通過動作來完成,但我想學習如何做這個(看似)非常簡單的任務,並在此基礎上創建更復雜,更有用的腳本。

另外,我不知道這是否重要,但我正在運行Ps CC15,ES工具包4,並使用腳本參考CC14

對於簡單填充,您只需要將第三行更改為

app.activeDocument.selection.fill(app.foregroundColor, ColorBlendMode.NORMAL, 100, false);

如果你想在腳本中添加一個新的實體填充,我已經添加了一個函數。 實心填充使用RGB顏色,前景顏色使用HEX cols

var docRef = app.activeDocument;

var layerRef = app.activeDocument.artLayers.add();

// set the foreground colour
var myColour = "F7E7CE";
setColour(myColour);

// fill this
// app.activeDocument.selection.fill(app.foregroundColor, ColorBlendMode.NORMAL, 100, false);

//or
// new solid fill
fillSolidColour(247,231,206);


// function SET COLOUR (hexcolour, set background?)
// --------------------------------------------------------
function setColour(hexcolour)
{
    // set foreground colour to matching colour
    var tempColor = new SolidColor;
    hexcolour = hexcolour.toString(); // stringify it

    tempColor.rgb.hexValue = hexcolour;

    // set foreground
    foregroundColor = tempColor;
}


function fillSolidColour(R, G, B)
{
  // =======================================================
  var id117 = charIDToTypeID( "Mk  " );
  var desc25 = new ActionDescriptor();
  var id118 = charIDToTypeID( "null" );
  var ref13 = new ActionReference();
  var id119 = stringIDToTypeID( "contentLayer" );
  ref13.putClass( id119 );
  desc25.putReference( id118, ref13 );
  var id120 = charIDToTypeID( "Usng" );
  var desc26 = new ActionDescriptor();
  var id121 = charIDToTypeID( "Type" );
  var desc27 = new ActionDescriptor();
  var id122 = charIDToTypeID( "Clr " );
  var desc28 = new ActionDescriptor();
  var id123 = charIDToTypeID( "Rd  " );
  desc28.putDouble( id123, R ); //red
  var id124 = charIDToTypeID( "Grn " );
  desc28.putDouble( id124, G ); //green
  var id125 = charIDToTypeID( "Bl  " );
  desc28.putDouble( id125, B ); //blue
  var id126 = charIDToTypeID( "RGBC" );
  desc27.putObject( id122, id126, desc28 );
  var id127 = stringIDToTypeID( "solidColorLayer" );
  desc26.putObject( id121, id127, desc27 );
  var id128 = stringIDToTypeID( "contentLayer" );
  desc25.putObject( id120, id128, desc26 );
  executeAction( id117, desc25, DialogModes.NO );
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM