RGB- und HSB-Farben umwandeln
Dieses Codes rechnen RGB und HSB (HSV) und zurück um. Dabei muss beachtet werden, wie die Eingabewerte zu formatieren sind (als (255,255,255) oder (1,1,1)).
function byteToPercent($color) // (255,255,0) -> (1,1,0)
{
return array(
round($color[0] / 255.0, 5),
round($color[1] / 255.0, 5),
round($color[2] / 255.0, 5)
);
}
function percentToByte($color) // (1,1,0) -> (255,255,0)
{
return array(
round($color[0] * 255, 0),
round($color[1] * 255, 0),
round($color[2] * 255, 0),
);
}
function rgb2hsv($color) // RGB = ([0...1],[0...1],[0...1])
{
list($r,$g,$b) = $color;
$v = max($r, $g, $b);
$minRGB = min($r, $g, $b);
$s = ($v == 0) ? 0 : ($v - $minRGB) / $v;
if ($s == 0) {
$h = null;
} else {
$cr = ($v - $r) / ($v - $minRGB);
$cg = ($v - $g) / ($v - $minRGB);
$cb = ($v - $b) / ($v - $minRGB);
if ($r == $v) $h = $cb - $cg;
if ($g == $v) $h = 2 + $cr - $cb;
if ($b == $v) $h = 4 + $cg - $cr;
$h /= 6;
if ($h < 0) $h++;
}
return array($h, $s, $v);
}
function hsv2rgb($color)
{
list($h,$s,$v) = $color;
$h = ($h - floor($h)) * 360;
$r = $g = $b = 0;
if ($s == 0) {
$r = $g = $b = $v;
} else {
$h = ($h == 360) ? 0 : ($h / 60);
$i = floor($h);
$f = $h - $i;
$m = $v * (1 - $s);
$n = $v * (1 - $s * $f);
$k = $v * (1 - $s * (1 - $f));
switch ($i) {
case 0: $r = $v; $g = $k; $b = $m; break;
case 1: $r = $n; $g = $v; $b = $m; break;
case 2: $r = $m; $g = $v; $b = $k; break;
case 3: $r = $m; $g = $n; $b = $v; break;
case 4: $r = $k; $g = $m; $b = $v; break;
case 5: $r = $v; $g = $m; $b = $n; break;
}
}
return array($r, $g, $b);
}
Snippetdetails
- hinzugefügt: 27.09.2008
- aktualisiert: 27.11.2008
- Snippet herunterladen
Kommentar verfassen
Fehler gefunden? Doofer Code? Ein kleines "Danke!"? Hinterlasse einfach einen Kommentar.
Dein Kommentar wird erst nach einer manuellen Prüfung angezeigt.