Interpolacja między kolorami
Dodany: 20 stycznia, 2015 | Kategoria: PHPMamy 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: colors, linear, mix, percentage, php Brak komentarzy »
Leave a Reply