如何用php实现RGB转换HSV

yu11men 2014-01-16 03:39:49
我想将RGB的颜色空间转换成HSV的,搜了一个算法,但是得出来的H值范围为0-1,实际值应该是0-360度的,请问怎样将H值转换成角度值啊,我想量化HSV空间,但是H值是按角度值算的
function RGB_TO_HSV ($R, $G, $B) // RGB Values:Number 0-255
{ // HSV Results:Number 0-1

$HSL = array();
$var_R = ($R / 255);

$var_G = ($G / 255);

$var_B = ($B / 255);

$var_Min = min($var_R, $var_G, $var_B);
$var_Max = max($var_R, $var_G, $var_B);

$del_Max = $var_Max - $var_Min;

$V = $var_Max;

if ($del_Max == 0)
{
$H = 0;
$S = 0;
}

else

{

$S = $del_Max / $var_Max;

$del_R = ( ( ( $var_Max - $var_R ) / 6 ) + ( $del_Max / 2 ) ) / $del_Max;

$del_G = ( ( ( $var_Max - $var_G ) / 6 ) + ( $del_Max / 2 ) ) / $del_Max;

$del_B = ( ( ( $var_Max - $var_B ) / 6 ) + ( $del_Max / 2 ) ) / $del_Max;

if ($var_R == $var_Max) $H = $del_B - $del_G;
else if ($var_G == $var_Max) $H = ( 1 / 3 ) + $del_R - $del_B;
else if ($var_B == $var_Max) $H = ( 2 / 3 ) + $del_G - $del_R;
if ($H<0) $H++;
if ($H>1) $H--;

}
$HSL['H'] = $H;
$HSL['S'] = $S;
$HSL['V'] = $V;

return $HSL;
}
...全文
269 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
yu11men 2014-01-16
  • 打赏
  • 举报
回复
http://blog.csdn.net/idfaya/article/details/6770414找到了
yu11men 2014-01-16
  • 打赏
  • 举报
回复
引用 2 楼 xuzuning 的回复:
你的算法是从哪里来的,似乎不对哟
H的都给了,不妨把SV也给了吧
xuzuning 2014-01-16
  • 打赏
  • 举报
回复
你的算法是从哪里来的,似乎不对哟
嘻哈大咖秀 2014-01-16
  • 打赏
  • 举报
回复
rad2deg -- 将弧度数转换为相应的角度数

20,395

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧