Interpolacja między kolorami

Dodany: 20 stycznia, 2015 | Kategoria: PHP

Mamy dwa kolory, chcielibyśmy uzyskać kolor pomiędzy nimi wyrażony w procentach (0% – 100%).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function mixcolors($color1, $color2, $amt)
{
$amt = min(1, max($amt, 0));

$c1_R = hexdec(substr($color1, 0, 2));
$c1_G = hexdec(substr($color1, 2, 2));
$c1_B = hexdec(substr($color1, 4, 2));

$c2_R = hexdec(substr($color2, 0, 2));
$c2_G = hexdec(substr($color2, 2, 2));
$c2_B = hexdec(substr($color2, 4, 2));

$d1 = $c1_R + (($c2_R - $c1_R) * $amt);
$d2 = $c1_G + (($c2_G - $c1_G) * $amt);
$d3 = $c1_B + (($c2_B - $c1_B) * $amt);

$m_p1 = sprintf('%02x', round($d1));
$m_p2 = sprintf('%02x', round($d2));
$m_p3 = sprintf('%02x', round($d3));

return '#' . $m_p1 . $m_p2 . $m_p3;
}

Wynik funkcji 

1
mixcolors('FF0000','00FF00', X)

gdzie X to kolejno 0, 0.25, 0.5, 0.75, 1

ff0000
bf4000
808000
40bf00
00ff00

Tagi: , , , , Brak komentarzy »