如何使用脚本在 Illustrator 中更改 LAB 颜色的值?

Posted

技术标签:

【中文标题】如何使用脚本在 Illustrator 中更改 LAB 颜色的值?【英文标题】:How do I change values of LAB colors in Illustrator using a script? 【发布时间】:2022-01-03 05:15:44 【问题描述】:

我正在尝试用 JS 编写一个脚本,它将遍历我文件中的所有对象,并更改它们的 LAB 颜色值(分别更改 L、A 和 B)。

我试过这段代码:

var doc = app.activeDocument;
                
doc.swatches.getByName("MySwatchName").color.l = 42;
doc.swatches.getByName("MySwatchName").color.a = 40;
doc.swatches.getByName("MySwatchName").color.b = 2;

但它不起作用。可以更改样本名称,但不能更改颜色值。

我阅读了this article,现在我想知道,我正在尝试做的事情是否使用脚本 API 是不可能的?

【问题讨论】:

看来直接做是不可能的。但是 Carlo 的代码给出了希望(虽然我可能错了)它可以间接完成:Lab > 转换为 RGB > 通过一些公式更改 RGB 颜色 > 转换回 Lab(或从某个预定义列表中选择最接近的 Lab 颜色) .需要进一步询问 至于“预定义的颜色列表”,顺便说一句,它可能是一个最简单(也是最愚蠢但有效)的解决方案。比如说,您可以使用 50*50*50 = 125.000 个 Lab-color 色板制作一个文件调色板(当然不是手动),通过脚本打开文件并从中获取您需要的最近的色板。我为 Pantone 颜色做了类似的事情。 嗨,Yuri,感谢您的帮助,我没有逃跑,但仍在尝试弄清楚如何使用 Carlo 的代码来满足我的需求。您知道将 LAB 颜色转换为 CMYK 并再次转换回来的具体代码是什么吗? 好的,感谢您的反馈。如果您需要帮助,请告诉我。 我试过这个代码:var doc = app.activeDocument swatchColor = doc.swatches.getByName('C'); const colorList = [swatchColor] convertSampleColor(ImageColorSpace.LAB, colorList, ImageColorSpace.CMYK, ColorConvertPurpose.defaultpurpose); alert("Code executed."); 这个代码应该只是将色板专色从 LAB 转换为 CMYK,但它没有帮助。弹出警报消息,但未进行任何更改。 【参考方案1】:

Illustrator 的 API 用于管理 Lab 颜色的工具有限。据我所知,只有现货 Lab 颜色可以通过脚本进行更改。

下面的函数将给定名称的 Lab 专色更改(或创建)给定值(L、a、b):

function change_lab_spot_color(L,a,b,spot_name) 

    var lab_color = new LabColor();
        lab_color.l = L;
        lab_color.a = a;
        lab_color.b = b;

    try 
        var spot = app.activeDocument.spots.getByName(spot_name);
     catch(e) 
        var spot = app.activeDocument.spots.add();
            spot.name = spot_name;
            spot.colorType = ColorModel.SPOT;
            spot.spotKind = SpotColorKind.SPOTLAB;
    

    spot.color = lab_color;

    var spot_color = new SpotColor();
        spot_color.spot = spot;



// it will create the spot color 'test' (if there is no swatch with this name)
change_lab_spot_color(50,50,0,'test');

// it will change the values of the spot color 'test' to L50,a0,b50
change_lab_spot_color(50,0,50,'test');

如果您想通过脚本更改颜色,您的作品应该使用专色 Lab 颜色绘制。可能很有可能重新着色您的作品以使用另一个脚本自动识别 Lab 颜色。

【讨论】:

以上是关于如何使用脚本在 Illustrator 中更改 LAB 颜色的值?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 JavaScript 在 Adob​​e Illustrator 中设置笔触对齐

通过脚本将效果应用于 Illustrator PathItem

自动化Illustrator“文本输出选项”对话框以进行批量导出

1.4 Illustrator的三种屏幕模式

用illustrator打开已含有path矢量路径坐标的SVG图片,怎么更改现在的路径?

Adobe Illustrator 中如何修改预览模式