简体   繁体   English

Javascript Photoshop:用于更改现有文本图层的文本颜色的语法

[英]Javascript Photoshop: Syntax for changing text color of an already existing text layer

I've created a photoshop action that adds a string of white text to a photo. 我创建了一个photoshop动作,该动作将一串白色文本添加到照片中。 In this action, I wrote a script that extends the canvas size and resizes the text within the extra canvas space to fit the dimensions of the image, creating a 'text tab' on the photo. 在此操作中,我编写了一个脚本,该脚本可扩展画布的大小,并在额外的画布空间内调整文本的大小以适合图像的尺寸,从而在照片上创建“文本标签”。 However, after the action and script are implemented, the color of the text in the tab is often... not white. 但是,在执行动作和脚本之后,选项卡中文本的颜色通常是...不是白色。

What is the scripting syntax I can use to change the color of the text layer to white, to ensure it doesn't randomly change color? 我可以使用什么脚本语法将文本层的颜色更改为白色,以确保它不会随机更改颜色?

For reference, here is the portion of my script that edits the text layer: 作为参考,这是我的脚本中用于编辑文本层的部分:

#target photoshop


var originalRulerUnits = app.preferences.rulerUnits;  
app.preferences.rulerUnits = Units.INCHES; 

var doc = app.activeDocument;  
var layer = doc.activeLayer;  

app.preferences.rulerUnits = Units.PIXELS; 

//create the color for the tab extension
var black = new SolidColor();  
black.rgb.hexValue = "111111";
app.backgroundColor = black;


//*****************************FOR EXTENDING CANVAS AND POSITIONING/RESIZING THE TEXT LAYER*********************************

var orgWidth = doc.width;
var orgHeight = doc.height;

if(orgWidth>orgHeight) //if document is landscape, resize text to fill a smaller portion of the tab
{
    layer.resize(((orgWidth-orgWidth*.2)/(layer.bounds[2]-layer.bounds[0]))*100,(orgWidth*.017/(layer.bounds[3]-layer.bounds[1]))*100,AnchorPosition.TOPLEFT);     

    doc.resizeCanvas(doc.width, (orgHeight + orgWidth*.04), AnchorPosition.TOPCENTER);

    layer.translate(undefined, new UnitValue(0-layer.bounds[1].as('px'),'px'));  
    layer.translate(undefined, orgHeight); 
    layer.translate(undefined, (orgWidth*.02-((layer.bounds[3]-layer.bounds[1])/2.3)));    


}
else //otherwise, resize text to fill a larger portion of the tab
{
    layer.resize(((orgWidth-orgWidth*.05)/(layer.bounds[2]-layer.bounds[0]))*100,(orgWidth*.017/(layer.bounds[3]-layer.bounds[1]))*100,AnchorPosition.TOPLEFT); 

    doc.resizeCanvas(doc.width, (orgHeight + orgWidth*.04), AnchorPosition.TOPCENTER);

    layer.translate(undefined, new UnitValue(0-layer.bounds[1].as('px'),'px'));  
    layer.translate(undefined, orgHeight); 
    layer.translate(undefined, (orgWidth*.02-((layer.bounds[3]-layer.bounds[1])/2.3))); 



}


var layerWidth = Number(layer.bounds[2] - layer.bounds[0]);
var dX = (orgWidth - layerWidth) / 2 - Number(layer.bounds[0]);
layer.translate(dX, undefined);


doc.flatten(); //flatten the text into the photo

app.preferences.rulerUnits = originalRulerUnits;  

It might be easier for you to code the text addition. 您可能更容易编写文本添加代码。 Here's a handy function I wrote for such an occasion. 这是我为这种场合编写的一个方便的函数。 The text is justified centre, but you can adjust that. 文字居中对齐,但您可以进行调整。 (I would have included that part of the function but it looks like IF spaghetti) (我本来应该包含该功能的那部分,但看起来像是意大利面条)

var x = (app.activeDocument.width.value)/2;
var y = (app.activeDocument.height.value)/2;

createText("Arial-BoldMT", 10.0, 255,255,255, "Gwen Stefanni is bananas", x, y)


// function CREATE TEXT(typeface, size, R, G, B, text content, text X pos, text Y pos)
// --------------------------------------------------------
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
  var just = Justification.CENTER;

  activeDocument.activeLayer.textItem.justification = just;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM