Javascript 如何检索Photoshop填充层中的颜色
我正在尝试编写一个脚本,以自动从Photoshop文件中提取多个填充层的颜色,我们根据使用情况进行自定义。 问题是似乎没有办法读取填充层的指定颜色 我已经尝试了我能想到的一切,但都没有成功。这是我迄今为止最接近的一次: 在论坛中,我找到了一种读取样例值和名称的方法。我使用了脚本侦听器插件来记录操作,但当双击填充层缩略图并点击“添加到样例”时,我得到的结果是这样的: 也就是说,我得到了我当时选择的特定值,但没有办法在循环中实现这一点(至少我能想到) 此外,如果我能找到一种方法,使每个填充层的颜色依次成为前景色,那么我知道我可以阅读,但我如何才能达到这一点?滴管似乎是一种选择,但我想不出一种方法使它起作用Javascript 如何检索Photoshop填充层中的颜色,javascript,colors,photoshop,Javascript,Colors,Photoshop,我正在尝试编写一个脚本,以自动从Photoshop文件中提取多个填充层的颜色,我们根据使用情况进行自定义。 问题是似乎没有办法读取填充层的指定颜色 我已经尝试了我能想到的一切,但都没有成功。这是我迄今为止最接近的一次: 在论坛中,我找到了一种读取样例值和名称的方法。我使用了脚本侦听器插件来记录操作,但当双击填充层缩略图并点击“添加到样例”时,我得到的结果是这样的: 也就是说,我得到了我当时选择的特定值,但没有办法在循环中实现这一点(至少我能想到) 此外,如果我能找到一种方法,使每个填充层的颜色依
有什么想法吗?我想它一直在那里。在这方面,它说: 这就是调整层的工作原理。有一个“调整”列表 通常有一个调整对象,在本例中为 solidColorLayer。里面是颜色描述符 我能够将每个填充层视为调整层,并从中提取颜色数据:
//@include "C:/Program Files/Adobe/Adobe Photoshop CC/Presets/Scripts/xlib/stdlib.js"
//Create CSV file to record palette
var skinColors = File ("c:/Skinpalette.txt");
if (skinColors.exists) {
skinColors.remove();
}
skinColors = new File ("c:/Skinpalette.txt");
//Function to extract color from Layer
function getAdjustmentLayerColor(doc, layer) {
var desc = Stdlib.getLayerDescriptor(doc, layer);
var adjs = desc.getList(cTID('Adjs'));
var clrDesc = adjs.getObjectValue(0);
var color= clrDesc.getObjectValue(cTID('Clr '));
var red = Math.round(color.getDouble(cTID('Rd ')));
var green = Math.round(color.getDouble(cTID('Grn ')));
var blue = Math.round(color.getDouble(cTID('Bl ')));
var createdSolidColor = Stdlib.createRGBColor(red, green, blue);
var createdRGBColor = createdSolidColor.rgb;
return createdRGBColor.hexValue;
};
//Function to cycle through layers and output to external file
function getColors(layerNode) {
for (var i=0; i<layerNode.length; i++) {
getColors(layerNode[i].layerSets);
for(var layerIndex=0; layerIndex < layerNode[i].artLayers.length; layerIndex++) {
var layer=layerNode[i].artLayers[layerIndex];
app.activeDocument.activeLayer = layer;
if (layer.kind == LayerKind.SOLIDFILL) {
skinColors.open ("a");
skinColors.write(layer.name + " = " + getAdjustmentLayerColor(app.activeDocument, layer) + ";\n");
skinColors.close ();
}
}
}
}
getColors(app.activeDocument.layerSets);
/@include“C:/Program Files/Adobe/Adobe Photoshop CC/Presets/Scripts/xlib/stdlib.js”
//创建CSV文件以记录调色板
var skinColors=文件(“c:/skinpalete.txt”);
if(skinColors.exists){
skinColors.remove();
}
skinColors=新文件(“c:/skinpalete.txt”);
//函数从图层中提取颜色
函数getAdjustmentLayerColor(文档,层){
var desc=Stdlib.getLayerDescriptor(文档,层);
var adjs=desc.getList(cTID('adjs'));
var clrDesc=adjs.getObjectValue(0);
var color=clrDesc.getObjectValue(cTID('Clr'));
var red=Math.round(color.getDouble(cTID('Rd'));
var green=Math.round(color.getDouble(cTID('Grn'));
var blue=Math.round(color.getDouble(cTID('Bl'));
var createdSolidColor=Stdlib.createRGBColor(红色、绿色、蓝色);
var createdRGBColor=createdSolidColor.rgb;
返回createdRGBColor.hexValue;
};
//函数循环遍历层并输出到外部文件
函数getColors(layerNode){
对于(var i=0;i
//@include "C:/Program Files/Adobe/Adobe Photoshop CC/Presets/Scripts/xlib/stdlib.js"
//Create CSV file to record palette
var skinColors = File ("c:/Skinpalette.txt");
if (skinColors.exists) {
skinColors.remove();
}
skinColors = new File ("c:/Skinpalette.txt");
//Function to extract color from Layer
function getAdjustmentLayerColor(doc, layer) {
var desc = Stdlib.getLayerDescriptor(doc, layer);
var adjs = desc.getList(cTID('Adjs'));
var clrDesc = adjs.getObjectValue(0);
var color= clrDesc.getObjectValue(cTID('Clr '));
var red = Math.round(color.getDouble(cTID('Rd ')));
var green = Math.round(color.getDouble(cTID('Grn ')));
var blue = Math.round(color.getDouble(cTID('Bl ')));
var createdSolidColor = Stdlib.createRGBColor(red, green, blue);
var createdRGBColor = createdSolidColor.rgb;
return createdRGBColor.hexValue;
};
//Function to cycle through layers and output to external file
function getColors(layerNode) {
for (var i=0; i<layerNode.length; i++) {
getColors(layerNode[i].layerSets);
for(var layerIndex=0; layerIndex < layerNode[i].artLayers.length; layerIndex++) {
var layer=layerNode[i].artLayers[layerIndex];
app.activeDocument.activeLayer = layer;
if (layer.kind == LayerKind.SOLIDFILL) {
skinColors.open ("a");
skinColors.write(layer.name + " = " + getAdjustmentLayerColor(app.activeDocument, layer) + ";\n");
skinColors.close ();
}
}
}
}
getColors(app.activeDocument.layerSets);