欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 时评 > 菜鸟笔记003 获取目标对象的颜色值

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

2025/11/2 23:17:55 来源:https://blog.csdn.net/bigfigure/article/details/142730602  浏览:    关键词:菜鸟笔记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;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词