【问题标题】:Check if RGB colours are the same检查RGB颜色是否相同
【发布时间】:2021-01-19 17:21:29
【问题描述】:

我正在尝试查看 Photoshop 脚本中的颜色是否相同

RGB 0,128,60 == RGB 0,128,60 // true
RGB 0,128,60 == RGB 0,128,64 // false

只有 every=> 等最花哨的 javascript 位(如 here 所示)不适用于 Photoshop 的 ECMA 脚本

这就是我所拥有的(基于Dogbert's example here),但我确信必须有一种更清洁的方式。除了将它们转换为十六进制然后进行比较之外。

alert(identical_colours([[0,128,60], [0,128,60]])); // true
alert(identical_colours([[0,128,60], [0,128,64]])); // false



function identical_colours(arr)
{
  for(var i = 0; i < arr.length - 1; i++)
  {
    if(arr[i][0] !== arr[i+1][0])
    {
      return false;
    }
    if(arr[i][1] !== arr[i+1][1])
    {
      return false;
    }
    if(arr[i][2] !== arr[i+1][2])
    {
      return false;
    }
  }
  // True! Yay!
  return true;
}

【问题讨论】:

    标签: colors ecmascript-5 photoshop-script


    【解决方案1】:

    为什么不使用 Photoshop 自己的颜色定义——SolidColor——它有一个.isEqual() 方法:

    var color1 = colorFromRGB(0, 128, 60);
    
    var color2 = colorFromRGB(0, 128, 60);
    
    alert(color1.isEqual(color2)); // > true
    
    function colorFromRGB(r, g, b)
    {
      var color = new SolidColor();
      color.rgb.red = r;
      color.rgb.green = g;
      color.rgb.blue = b;
      return color;
    }
    

    【讨论】:

    • 我知道 SolidColor,没有它很难不创建颜色 :),但我永远不会猜到 .isEqual() 方法!
    • @GhoulFool 我刚刚让自己成为一个从不同输入生成SolidColor 的变形器。类似于我的答案,但从一个对象作为参数:newSolidColor({type:'rgb',value:[0,0,0]})newSolidColor({type:'hex',value:'ffffff'})
    猜你喜欢
    • 2018-02-10
    • 2013-11-25
    • 2011-07-25
    • 2010-10-15
    • 1970-01-01
    • 1970-01-01
    • 2020-07-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多