Работа с HSB

alex234

Guest
Работа с HSB

Подскажите, есть ли в пхп метеод(ф-ция) перекодировки из HSB в RGB?
 

Profic

just Profic (PHP5 BetaTeam)
встроенной нет
поиска не видел? :) а ну марш в поиск в том же google...

http://semmix.pl/color/extrans/etr40.htm
там хоть и по польски, но есть исходник, правда на pasсal, но алгоритм, то есть, так что если сильно нужно, можно переделать на php :)
вот ;)
 

alex234

Guest
это, конечно, хорошо, может у кого-то есть другие соображения?
 

alex234

Guest
пытаюсь разобраться по линку, но все равно давай.
 

Vanilla

Guest
Я тебе послал, на email указанный в форуме
 

alex234

Guest
THZ 2 Vanilla
функция пертирована:

PHP:
// Возращает массив из r, g, b
function HSB2RGB ($hue, $saturation, $brightness) {
	$r=$g=$b=0;
	
	if ($saturation == 0) {
		$r = $g = $b = intval($brightness * 255 + 0.5);
	} 
	else {
			$h = ($hue - intval($hue)) * 6;
			$f = $h - intval($h);
			$p = $brightness * (1 - $saturation);
			$q = $brightness * (1 - $saturation * $f);
			$t = $brightness * (1 - ($saturation * (1 - $f)));

			$h_i = intval($h);
		if ($h_i==0) {
			$r = intval($brightness * 255 + 0.5);
			$g = intval($t * 255 + 0.5);
			$b = intval($p * 255 + 0.5);
		}
		if ($h_i==1) {
			$r = intval($q * 255 + 0.5);
			$g = intval($brightness * 255 + 0.5);
			$b = intval($p * 255 + 0.5);
		}
		if ($h_i==2) {
			$r = intval($p * 255 + 0.5);
			$g = intval($brightness * 255 + 0.5);
			$b = intval($t * 255 + 0.5);
		}
		if ($h_i==3) {
			$r = intval($p * 255 + 0.5);
			$g = intval($q * 255 + 0.5);
			$b = intval($brightness * 255 + 0.5);
		}
		if ($h_i==4) {
			$r = intval($t * 255 + 0.5);
			$g = intval($p * 255 + 0.5);
			$b = intval($brightness * 255 + 0.5);
		}
		if ($h_i==5) {
			$r = intval($brightness * 255 + 0.5);
			$g = intval($p * 255 + 0.5);
			$b = intval($q * 255 + 0.5);
		}
	}
$array=array($r, $g, $b);
return $array;
}
На вход функции надо передавать значения hue, saturation и brightness
в интервале от 0 до 1. Например:
HSB2RGB(0.3, 0.2, 1);
 
Сверху