这个问题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脚本参考,我不知道如何首先创建一个图层然后添加它。
我仍然在问,因为我可能错过了某些内容或者有正式的方式来做这件事,但由于某种原因没有把它变成官方文档。
答案 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