Имам една идея за автоматична смяна на цветната схема на Bootstrap-базиран сайт. За целта ми трябва просто извличане на цветовете от картинка с php-скрипт.
За базови цветове създавам проста картинка с квадратчета, като тази:
За да извлека цветовете от отделните квадратчета използвам php-функцията imagecolorat, която взима цвета на пиксел при зададени кооординати. Координатната система е нулирана в горния ляв ъгъл:
Примерен скрипт в който използвам извличане цвета на пиксел, който се намира горе-долу по средата на всеки правоъгълник:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | <?php // $rgb е array function rgb2hex($rgb) { $hex = "#"; $hex .= str_pad(dechex($rgb[0]), 2, "0", STR_PAD_LEFT); $hex .= str_pad(dechex($rgb[1]), 2, "0", STR_PAD_LEFT); $hex .= str_pad(dechex($rgb[2]), 2, "0", STR_PAD_LEFT); return $hex; } function get_color_from_pixel($img, $x, $y){ $im = imagecreatefrompng($img); $rgb = imagecolorat($im, $x, $y); $r = ($rgb >> 16) & 0xFF; $g = ($rgb >> 8) & 0xFF; $b = $rgb & 0xFF; return rgb2hex(array($r, $g, $b)); } // =================================================== // EXAMPLE $image = "image.png"; $y = 24; $x_ar = array(33, 103, 177, 244, 315, 385, 454, 526, 593); foreach ($x_ar as $x) { $colors[] = get_color_from_pixel($image, $x, $y); } print_r($colors); ?> |
Резултат:
1 2 3 4 5 6 7 8 9 10 11 12 | Array ( [0] => #36261c [1] => #d5c187 [2] => #6ecddf [3] => #827b3a [4] => #2a7d94 [5] => #9db079 [6] => #82796d [7] => #a7c6da [8] => #d54c06 ) |
Изтегляне на скрипта и картинката: PHP-get_colors_from_image.zip