检查RGB颜色是否相同

问题描述

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

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

只有像 every=> 这样的最花哨的 javascript 位here 不适用于 Photoshop 的 ECMA 脚本

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

alert(identical_colours([[0,60],[0,60]])); // true
alert(identical_colours([[0,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;
}

解决方法

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

var color1 = colorFromRGB(0,128,60);

var color2 = colorFromRGB(0,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;
}