You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用JS脚本修改Illustrator中的LAB颜色值

你遇到的不生效问题不是API不支持该功能,是写法错误导致的:Illustrator脚本中swatch.color返回的是颜色对象的值拷贝,直接修改这个临时对象的属性不会同步更新到色板本身,必须修改后重新赋值给色板的color属性才会生效。

正确修改色板LAB值的代码

var doc = app.activeDocument;
// 取出目标色板
var targetSwatch = doc.swatches.getByName("MySwatchName");
// 取出颜色对象修改通道值
var labColor = targetSwatch.color;
labColor.l = 42;
labColor.a = 40;
labColor.b = 2;
// 重新赋值回色板触发更新
targetSwatch.color = labColor;

如果你需要遍历文档内所有矢量对象,直接修改对象本身的填充/描边LAB色值(不绑定色板),可以参考以下逻辑:

var doc = app.activeDocument;
// 遍历所有页面对象
for (var i = 0; i < doc.pageItems.length; i++) {
  var item = doc.pageItems[i];
  // 修改填充色
  if (item.filled && item.fillColor.typename === "LabColor") {
    var fillLab = item.fillColor;
    // 示例:L通道加5,a、b通道各减3,可按需调整规则
    fillLab.l = Math.min(100, fillLab.l + 5);
    fillLab.a = Math.max(-128, Math.min(127, fillLab.a - 3));
    fillLab.b = Math.max(-128, Math.min(127, fillLab.b - 3));
    item.fillColor = fillLab;
  }
  // 修改描边色逻辑同理,替换fill相关属性为stroke即可
  if (item.stroked && item.strokeColor.typename === "LabColor") {
    var strokeLab = item.strokeColor;
    strokeLab.l = Math.min(100, strokeLab.l + 5);
    strokeLab.a = Math.max(-128, Math.min(127, strokeLab.a - 3));
    strokeLab.b = Math.max(-128, Math.min(127, strokeLab.b - 3));
    item.strokeColor = strokeLab;
  }
}

注意LAB通道取值范围要合规:L通道取值区间为0-100,a、b通道取值区间为-128到127,超出范围会触发脚本报错。

内容的提问来源于stack exchange,提问作者Ishay Frenkel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 10:15:06