首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用extendscript (javascript)根据现有的样本创建样本

使用extendscript (javascript)根据现有的样本创建样本
EN

Stack Overflow用户
提问于 2020-09-04 19:12:34
回答 2查看 620关注 0票数 0

我想在InDesign中根据现有的色块创建许多色块。我想获取现有样本的数字,并通过添加值来创建新的样本,即Cyan +1、Magenta +2、黄色+0、Black +0。谢谢!

EN

回答 2

Stack Overflow用户

发布于 2020-09-08 18:49:10

像这样的事应该能做好。

代码语言:javascript
复制
const clamp = (value, min, max) => Math.max(min, Math.min(value, max));

// value: { c: number, m: number, y: number, k: number }
const swatch = (value) => {
  const results = [];
  const keys = ['c', 'm', 'y', 'k'];

  for (let i = 1; i >= -1; i -= 2) {
    for (let key of keys) {
      if (clamp(value[key] + i, 0, 100) != value[key]) {
        results.push({ ...value, [key]: value[key] + i });
      }
    }
  }
  
  return results;
};

console.log(swatch({
  c: 40,
  m: 20,
  y: 40,
  k: 20
}));
票数 1
EN

Stack Overflow用户

发布于 2020-09-30 00:39:43

下面是非常简单的实现:

代码语言:javascript
复制
var COLORS = app.activeDocument.colors;
var BASE = COLORS.itemByName("BASE");

function add_color(name,c,m,y,k) {
    var color = COLORS.add();
        color.space = ColorSpace.CMYK;
        color.colorValue = [
            BASE.colorValue[0] + c,
            BASE.colorValue[1] + m,
            BASE.colorValue[2] + y,
            BASE.colorValue[3] + k ];
        color.name = get_name(name);
}

// color names should not be the same, it adds "+" to the repeated names
function get_name(name) {
    try {
        return get_name(COLORS.itemByName(name).name + "+");
    } catch(e) {
        return name;
    }
}

add_color("#1", 1, 0, 0, 0);
add_color("#2", 0, 1, 0, 0);
add_color("#3", 0, 0, 1, 0);
add_color("#4", 0, 0, 0, 1);

add_color("#5",-1, 0, 0, 0);
add_color("#6", 0,-1, 0, 0);
add_color("#7", 0, 0,-1, 0);
add_color("#8", 0, 0, 0,-1);

也许您需要想出更好的方法来处理重复的颜色名称。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63746858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档