Photoshop脚本 - 如何在一个历史状态

时间:2016-01-14 23:06:05

标签: javascript photoshop

这个问题Photoshop Script to create text in a bitmap image in Photoshop已经回答了如何在photoshop中创建文本图层,但是在历史记录选项卡中,您可以看到8-10个历史状态更改。有没有办法做同样的工作,但只改变历史一次?

显然问题是所提到的答案首先在文档中添加一个图层,然后将其编辑8-10次,解决方案是创建图层并编辑它的属性,然后在准备好之后将其添加到文档中。

我在Photoshop CC 2014 Javascript Scripting Reference中搜索过,它只列出了ArtLayers方法的3种方法:add(),getByName()和removeAll()。

函数add()创建新图层,添加它然后返回它。因此,根据Javascript脚本参考,我不知道如何首先创建一个图层然后添加它。

我仍然在问,因为我可能错过了某些内容或者有正式的方式来做这件事,但由于某种原因没有把它变成官方文档。

1 个答案:

答案 0 :(得分:0)

迟到总比没有好,但是是有可能的。您只需使用suspendHistory

暂停历史记录状态

只需以字符串形式传递您的函数即可 app.activeDocument.suspendHistory("string", "myFunction()");

据我所知,第一个参数是历史状态字符串。

如示例中

// Switch off any dialog boxes
displayDialogs = DialogModes.ERROR; // OFF 

app.activeDocument.suspendHistory ("history state", "createText('Arial-BoldMT', 48, 0, 128, 0, 'Hello World', 100, 50)");


function createText(fface, size, colR, colG, colB, content, tX, tY)
{

  // Add a new layer in the new document
  var artLayerRef = app.activeDocument.artLayers.add()

  // Specify that the layer is a text layer
  artLayerRef.kind = LayerKind.TEXT

  //This section defines the color of the hello world text
  textColor = new SolidColor();
  textColor.rgb.red = colR;
  textColor.rgb.green = colG;
  textColor.rgb.blue = colB;

  //Get a reference to the text item so that we can add the text and format it a bit
  textItemRef = artLayerRef.textItem
  textItemRef.font = fface;
  textItemRef.contents = content;
  textItemRef.color = textColor;
  textItemRef.size = size
  textItemRef.position = new Array(tX, tY) //pixels from the left, pixels from the top

  activeDocument.activeLayer.name = "Text";
  activeDocument.activeLayer.textItem.justification = Justification.CENTER;
}


// Set Display Dialogs back to normal
displayDialogs = DialogModes.ALL; // NORMAL