note 44244 modified in function.imagecolorallocate by danbrown
| From: | danbrown@php.net | Date: | Fri, 24 Apr 2009 12:51:58 +0000 |
| Subject: | note 44244 modified in function.imagecolorallocate by danbrown | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-153672@lists.php.net to get a copy of this message | ||
Some of you maybe want to use HSV color model for drawing color selectors and circles:
<?php
function &colormap_hsv_to_rgb($h, $s, $v)
{
$ret = new stdClass();
if($s == 0)
{
$ret->r = $v;
$ret->g = $v;
$ret->b = $v;
return $ret;
}
else
{
$h = floatval($h) / 255.0;
$s = floatval($s) / 255.0;
$v = floatval($v) / 255.0;
$hue = $h;
if($hue == 1.0)
$hue = 0.0;
$hue *= 6.0;
$i = intval($hue);
$f = $hue - floatval($i);
$w = $v * (1.0 - $s);
$q = $v * (1.0 - ($s * $f));
$t = $v * (1.0 - ($s * (1.0 - $f)));
switch($i)
{
case 0: $ret->r = $v; $ret->g = $t; $ret->b = $w; break;
case 1: $ret->r = $q; $ret->g = $v; $ret->b = $w; break;
case 2: $ret->r = $w; $ret->g = $v; $ret->b = $t; break;
case 3: $ret->r = $w; $ret->g = $q; $ret->b = $v; break;
case 4: $ret->r = $t; $ret->g = $w; $ret->b = $v; break;
case 5: $ret->r = $v; $ret->g = $w; $ret->b = $q; break;
}
}
$ret->r = intval($ret->r * 255.0);
$ret->g = intval($ret->g * 255.0);
$ret->b = intval($ret->b * 255.0);
return $ret;
}
?>
--was--
Some of you maybe want to use HSV color model for drawing color selectors and circles:
<?
function &colormap_hsv_to_rgb($h, $s, $v)
{
$ret = new stdClass();
if($s == 0)
{
$ret->r = $v;
$ret->g = $v;
$ret->b = $v;
return $ret;
}
else
{
$h = floatval($h) / 255.0;
$s = floatval($s) / 255.0;
$v = floatval($v) / 255.0;
$hue = $h;
if($hue == 1.0)
$hue = 0.0;
$hue *= 6.0;
$i = intval($hue);
$f = $hue - floatval($i);
$w = $v * (1.0 - $s);
$q = $v * (1.0 - ($s * $f));
$t = $v * (1.0 - ($s * (1.0 - $f)));
switch($i)
{
case 0: $ret->r = $v; $ret->g = $t; $ret->b = $w; break;
case 1: $ret->r = $q; $ret->g = $v; $ret->b = $w; break;
case 2: $ret->r = $w; $ret->g = $v; $ret->b = $t; break;
case 3: $ret->r = $w; $ret->g = $q; $ret->b = $v; break;
case 4: $ret->r = $t; $ret->g = $w; $ret->b = $v; break;
case 5: $ret->r = $v; $ret->g = $w; $ret->b = $q; break;
}
}
$ret->r = intval($ret->r * 255.0);
$ret->g = intval($ret->g * 255.0);
$ret->b = intval($ret->b * 255.0);
return $ret;
}
?>
http://php.net/manual/en/function.imagecolorallocate.php