Php 查找颜色范围

Php 查找颜色范围,php,colors,range,rgb,Php,Colors,Range,Rgb,我想从一个RGB值中找出一系列颜色 例如,如果给我RGB0100200,它将给我rgb0,0255和RGB0255255之间的所有内容。但不是rgb255,0255 类似地,rgb150,50,0。返回:rgb255,0,0和RGB255255,0。不是rgb255,0255 有意义吗 我正在使用PHP,我不确定我是否理解正确,但我想你是说其中一个数字高于另外两个,其中一个值总是零。如果是这种情况,您应该能够使用类似于的简单If-else语句 if (r > g && r

我想从一个RGB值中找出一系列颜色

例如,如果给我RGB0100200,它将给我rgb0,0255和RGB0255255之间的所有内容。但不是rgb255,0255

类似地,rgb150,50,0。返回:rgb255,0,0和RGB255255,0。不是rgb255,0255

有意义吗


我正在使用PHP,我不确定我是否理解正确,但我想你是说其中一个数字高于另外两个,其中一个值总是零。如果是这种情况,您应该能够使用类似于的简单If-else语句

if (r > g && r > b) {
  if (g > 0) {
    color1 = rgb(255, 0, 0);
    color2 = rgb(255, 255, 0);
  }
  else {
    color1 = rgb(255, 0, 0);
    color2 = rgb(255, 0, 255);
  }
}
else if (r < g && g > b) {
   .
   .
   .
}

希望这能帮你解决问题。

嗯,我不确定我是否理解正确,但我想你是说其中一个数字高于另外两个,其中一个值总是零。如果是这种情况,您应该能够使用类似于的简单If-else语句

if (r > g && r > b) {
  if (g > 0) {
    color1 = rgb(255, 0, 0);
    color2 = rgb(255, 255, 0);
  }
  else {
    color1 = rgb(255, 0, 0);
    color2 = rgb(255, 0, 255);
  }
}
else if (r < g && g > b) {
   .
   .
   .
}

希望这能帮助您解决问题。

您介绍的算法基本上是:一种颜色由两个RGB分量组成。让最强的RGB分量为S,另一个分量为O。创建255个变量,其中S为255,O的范围为0到255

例如,以下所有示例产生相同的结果:

a) rgb(0,100,200) 
b) rgb(0,199,200)
c) rgb(0,254,255)
d) rgb(0,1,2)

Result: rgb(0,[0-255],255)
这意味着您只有6个变体

红色为最大分量,绿色次之=>rgb255[0-255],0 红色为最大分量,蓝色次之=>rgb255,0[0-255] 绿色为最大分量,红色次之为最大=>rgb[0-255],255,0 绿色是最大的组件,蓝色次之=rgb[0-255],0255 蓝色是最大的成分,红色次之=>rgb[0-255],0255 蓝色是最大的组件,绿色次大=>rgb0[0-255],255 您的算法的意图并不清楚,所以我猜您的用例实际上与您解释的不同。实际上,它不处理包含1或3个组件的颜色大多数颜色

如果您的目标是找到相似的颜色,例如,在一定距离内的颜色,则有更好的方法。例如,您可以将颜色转换为HSV颜色空间色调、饱和度、值,然后如果H、S或V中的任何一个分量与原始值相差+/-10步,则表示颜色相似

例如:

RGB255100,0=>HSV24100100


你的范围是hsv[14-34],[90-110],[90-110]

你解释的算法基本上是:一种颜色由两个RGB分量组成。让最强的RGB分量为S,另一个分量为O。创建255个变量,其中S为255,O的范围为0到255

例如,以下所有示例产生相同的结果:

a) rgb(0,100,200) 
b) rgb(0,199,200)
c) rgb(0,254,255)
d) rgb(0,1,2)

Result: rgb(0,[0-255],255)
这意味着您只有6个变体

红色为最大分量,绿色次之=>rgb255[0-255],0 红色为最大分量,蓝色次之=>rgb255,0[0-255] 绿色为最大分量,红色次之为最大=>rgb[0-255],255,0 绿色是最大的组件,蓝色次之=rgb[0-255],0255 蓝色是最大的成分,红色次之=>rgb[0-255],0255 蓝色是最大的组件,绿色次大=>rgb0[0-255],255 您的算法的意图并不清楚,所以我猜您的用例实际上与您解释的不同。实际上,它不处理包含1或3个组件的颜色大多数颜色

如果您的目标是找到相似的颜色,例如,在一定距离内的颜色,则有更好的方法。例如,您可以将颜色转换为HSV颜色空间色调、饱和度、值,然后如果H、S或V中的任何一个分量与原始值相差+/-10步,则表示颜色相似

例如:

RGB255100,0=>HSV24100100


然后,您的范围是hsv[14-34]、[90-110]、[90-110]

您必须更具体地说明应如何确定范围的端点。您必须更具体地说明应如何确定范围的端点。