在jsx中获取设计中的样本的十六进制值

问题描述 投票:0回答:1

我正在尝试获取文档色板的十六进制颜色。这是我所拥有的

function hexColor() {
    var myDoc = app.activeDocument;
    var myColors = myDoc.colors;
    var swatches = myDoc.swatches;

var array = [];

for (var h = 0; h < swatches.length; h++) {
    var mySwatches = swatches[h].name;
    array.push(mySwatches);
}

alert(array);

}

我试图做色板[h] .ColorSpace.hexValue;

这不起作用。有什么想法吗?

javascript arrays json hex adobe-indesign
1个回答
0
投票

得到了别人的帮助。对我有用的答案

app.activeDocument.rgbProfile="sRGB IEC61966-2.1"
var swatches = app.activeDocument.swatches;
var array = [];

for (var i = 0; i < swatches.length; i++) {
    try {
        array.push(rgbToHex(swatches[i]));
    }
    catch(e){}
}

alert(array);
}

//function to convert rgb to hex
function rgbToHex(s){
    var hexStr = "";
    var dup = s.duplicate();
    dup.space = ColorSpace.RGB
    var c = dup.colorValue;

    for (var i = 0; i < c.length; i++) {
        var hex = Number(c[i]).toString(16);
        if (hex.length < 2) {
            hex = "0" + hex;
        } 
        hexStr += hex;
    }
    dup.remove();
    return hexStr;
}
© www.soinside.com 2019 - 2024. All rights reserved.