菜鸟笔记003 获取目标对象的颜色值

在illustrator中,我们时常要获取一些对象的颜色值,但是一时不知道如何获取,下面我就来讲讲如何获取目标对象的颜色值。

下面以选择对象的最上层对象为例,我们通过查阅javascript编程手册,可以很容易获取下面代码:

var sel=app.activeDocument.selection[0]; //获取最上层对象
var col=sel.fillColor; //获取填充颜色
alert(col) //在屏幕输出颜色

但是,当我们把上面代码直接在illustrator运行。

得到的是下面的结果,但是这并不是我们要的,输出的是颜色的类型,不是我们要的是颜色的数值。所以我们再次查阅手册,在[CMYKColor]看到

看了资料,我们可以很容易获取对象CMYKColor的cyan, magenta, yellow, black四种颜色的值,但是对象的颜色类型只有CMYKColor一种吗?肯定不是的。查阅手册我们看到Color有8种类型:

Color
An abstract parent class for all color classes used in Illustrator. Subclasses are:
CMYKColor
GradientColor
GrayColor
LabColor
NoColor
PatternColor
RGBColor
SpotColor

 好了我们对颜色有个基本的了解和认识了,我们可以写出获取颜色数值并把它包装成一个 getColorValues的函数了。

function getColorValues(color) {
    switch (color.typename) {
        case 'CMYKColor':
            var c = color.cyan;
            var m = color.magenta;
            var y = color.yellow;
            var k = color.black;
            return [c, m, y, k];
        case 'RGBColor':
            var r = color.red;
            var g = color.green;
            var b = color.blue;
            return [r, g, b, ''];
        case 'GrayColor':
            return ['', '', '', color.gray];
        case 'SpotColor':
            return getSpotColor(color.spot);
        case 'PatternColor':
            return ['', '', '', '', color.pattern.name];
        case 'GradientColor':
            return [undefined];
        case 'NoColor':
            return [undefined];
    }
}

完整代码如下:

function getColor(){
    var sel=app.activeDocument.selection[0];
    var col=sel.fillColor;
alert(getColorValues(col));
    
}

function getColorValues(color) {
    switch (color.typename) {
        case 'CMYKColor':
            var c = color.cyan;
            var m = color.magenta;
            var y = color.yellow;
            var k = color.black;
            return [c, m, y, k];
        case 'RGBColor':
            var r = color.red;
            var g = color.green;
            var b = color.blue;
            return [r, g, b, ''];
        case 'GrayColor':
            return ['', '', '', color.gray];
        case 'SpotColor':
            return getSpotColor(color.spot);
        case 'PatternColor':
            return ['', '', '', '', color.pattern.name];
        case 'GradientColor':
            return [undefined];
        case 'NoColor':
            return [undefined];
    }
}

getColor ();

后续,如果想要获取多个对象的颜色数值呢,可以加上下面代码:

function getColors(items) {
    var colors = [];
    for (var i = 0; i < items.length; i++) {
        var item = items[i];
        if (item.filled) colors.push(getColorValues(item.fillColor));
        if (item.stroked) colors.push(getColorValues(item.strokeColor));
    }
    return colors;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值