Javascript 如何检索Photoshop填充层中的颜色

Javascript 如何检索Photoshop填充层中的颜色,javascript,colors,photoshop,Javascript,Colors,Photoshop,我正在尝试编写一个脚本,以自动从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);