问题描述
我正在尝试查看 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;
}