> 16) & 0xFF; $green = ($color >> 8) & 0xFF; $blue = $color & 0xFF; // 返回 RGB 值 return array($red, $green, $blue); } $colorarr = []; foreach($colors as $v){ $crr = hexToRgb($v); $colorarr[] =[$crr[0],$crr[1],$crr[2]]; } use Phpml\Clustering\KMeans; $kmeans = new KMeans(64); // 选择 10 个簇 $clusters = $kmeans->cluster($colorarr); $newclusters = array_map(function($subArr) { return array_values($subArr); }, $clusters); /*$sixcolor = array( "红色" => "#FF0000", "橙色" => "#FFA500", "黄色" => "#FFFF00", "绿色" => "#008000", "青色" => "#00FFFF", "蓝色" => "#0000FF", "紫色" => "#800080", "粉红色" => "#FFC0CB", "棕色" => "#A52A2A", "灰色" => "#808080", "白色" => "#FFFFFF", "黑色" => "#000000", "银色" => "#C0C0C0", "金色" => "#FFD700", "珊瑚色" => "#FF7F50", "海军蓝色" => "#000080" ); foreach($sixcolor as $v){ echo "
$v
"; $v = str_replace('#','',$v); $colorint[] =hexdec($v); }*/ $colorint = $colorgb = $colorhex= []; foreach ($newclusters as $v) { $middleIndex = floor(count($v) / 2); $rgbarr = $v[$middleIndex]; $colorgb[] = $rgbarr; $chex = sprintf("#%02x%02x%02x", $rgbarr[0], $rgbarr[1], $rgbarr[2]); $colorhex[] =$chex; echo "
$chex
"; $chex = str_replace('#','',$chex); $colorint[] =hexdec($chex); } print_r($colorgb);die; echo '
'; echo '
'; foreach ($colorhex as $k=>$v){ if($k == 7 || $k == 52){ print_r($colorgb[$k]); echo "
$v
"; } } echo '
'; echo '
'; function intToHexColor($intColor) { // 将整型值转换为十六进制字符串 $hexColor = dechex($intColor); // 如果十六进制字符串长度不足 6 位,则在前面补 0 $hexColor = str_pad($hexColor, 6, '0', STR_PAD_LEFT); // 在十六进制字符串前面加上 x0 $hexColor = '0x' . $hexColor; // 返回转换后的十六进制颜色值 return $hexColor; } /*$arr = []; foreach($colorint as $v){ $arr[] = intToHexColor($v); }*/ // 打开文件并写入数组数据 /*$file = fopen('colors.php', 'w'); fwrite($file, ''); fclose($file); print_r($arr);die;*/ $colorint = [ 0xfff8e1,0xf57c00,0xffd740,0xb3e5fc,0x607d8b,0xd7ccc8, 0xff80ab,0x4e342e,0x9e9e9e,0x66bb6a,0xaed581,0x18ffff, 0xffe0b2,0xc2185b,0x00bfa5,0x00e676,0x0277bd,0x26c6da, 0x7c4dff,0xea80fc,0x512da8,0x7986cb,0x00e5ff,0x0288d1, 0x69f0ae,0x3949ab,0x8e24aa,0x40c4ff,0xdd2c00,0x283593, 0xaeea00,0xffa726,0xd84315,0x82b1ff,0xab47bc,0xd4e157, 0xb71c1c,0x880e4f,0x00897b,0x689f38,0x212121,0xffff00, 0x827717,0x8bc34a,0xe0f7fa,0x304ffe,0xd500f9,0xec407a, 0x6200ea,0xffab00,0xafb42b,0x6a1b9a,0x616161,0x8d6e63, 0x80cbc4,0x8c9eff,0xffeb3b,0xffe57f,0xfff59d,0xff7043, 0x1976d2,0x5c6bc0,0x64dd17,0xffd600]; /*$webSafeColors = array( 0xFF0000 => "红色", 0xFF1A1A => "深红色", 0xFF3333 => "深红色", 0xFF4D4D => "深红色", 0xFF6666 => "深红色", 0xFF8080 => "深红色", 0xFF9999 => "深红色", 0xFFB3B3 => "浅红色", 0xFFCCCC => "浅红色", 0xFFE6E6 => "浅红色", 0xFFF0F0 => "浅红色", 0xFFF5F5 => "浅红色", 0xFFFAFA => "浅红色", 0xFFE0E0 => "浅红色", 0xFFC8C8 => "浅红色", 0xFFB0B0 => "浅红色", 0xFF00FF => "洋红色", 0xFF1AFF => "深洋红色", 0xFF33FF => "深洋红色", 0xFF4DFF => "深洋红色", 0xFF66FF => "深洋红色", 0xFF80FF => "深洋红色", 0xFF99FF => "深洋红色", 0xFFB3FF => "浅洋红色", 0xFFCCFF => "浅洋红色", 0xFFE6FF => "浅洋红色", 0xFFF0FF => "浅洋红色", 0xFFF5FF => "浅洋红色", 0xFFFAFF => "浅洋红色", 0xFFE0FF => "浅洋红色", 0xFFC8FF => "浅洋红色", 0xFFB0FF => "浅洋红色", 0xFFFF00 => "黄色", 0xFFFF1A => "深黄色", 0xFFFF33 => "深黄色", 0xFFFF4D => "深黄色", 0xFFFF66 => "深黄色", 0xFFFF80 => "深黄色", 0xFFFF99 => "深黄色", 0xFFFFB3 => "浅黄色", 0xFFFFCC => "浅黄色", 0xFFFFE6 => "浅黄色", 0xFFFFF0 => "浅黄色", 0xFFFFF5 => "浅黄色", 0xFFFFFF => "浅黄色", 0xFFF0E0 => "淡橙色", 0xFFE0C8 => "淡橙色", 0xFFD1A0 => "淡橙色", 0xFFFFFF => "白色", 0xF5F5F5 => "浅灰色", 0xE0E0E0 => "浅灰色", 0xC8C8C8 => "浅灰色", 0xB0B0B0 => "浅灰色", 0x999999 => "深灰色", 0x808080 => "深灰色", 0x666666 => "深灰色", 0x4D4D4D => "深灰色", 0x333333 => "深灰色", 0x1A1A1A => "深灰色", 0x000000 => "黑色", 0xFFF5F5 => "浅粉色", 0xFFE0E0 => "浅粉色", 0xFFC8C8 => "浅粉色", 0xFFB0B0 => "浅粉色", 0xC0C0C0 => "银色", 0xC8C8C8 => "浅灰色", 0xD1D1D1 => "浅灰色", 0xDADADA => "浅灰色", 0xE3E3E3 => "浅灰色", 0xECECEC => "浅灰色", 0xF5F5F5 => "浅灰色", 0xFFFFFF => "白色", 0xB3B3B3 => "深灰色", 0x999999 => "深灰色", 0x808080 => "深灰色", 0x666666 => "深灰色", 0x4D4D4D => "深灰色", 0x333333 => "深灰色", 0x1A1A1A => "深灰色", 0x000000 => "黑色", 0x808080 => "灰色", 0x8C8C8C => "浅灰色", 0x999999 => "浅灰色", 0xA6A6A6 => "浅灰色", 0xB3B3B3 => "浅灰色", 0xC0C0C0 => "浅灰色", 0xC8C8C8 => "浅灰色", 0xD1D1D1 => "浅灰色", 0xDADADA => "浅灰色", 0xE3E3E3 => "浅灰色", 0xECECEC => "浅灰色", 0xF5F5F5 => "浅灰色", 0xFFFFFF => "白色", 0x666666 => "深灰色", 0x4D4D4D => "深灰色", 0x333333 => "深灰色", 0x800000 => "深红色", 0x8B0000 => "深红色", 0x960000 => "深红色", 0xA00000 => "深红色", 0xAA0000 => "深红色", 0xB40000 => "深红色", 0xBF0000 => "深红色", 0xC90000 => "深红色", 0xD40000 => "深红色", 0xDF0000 => "深红色", 0xE90000 => "深红色", 0xF40000 => "深红色", 0xFF0000 => "红色", 0xFFA500 => "橙色", 0xFFB347 => "浅橙色", 0xFFC299 => "浅橙色", 0xFFD1BD => "浅橙色", 0xFFE0E5 => "浅橙色", 0xFFE5B4 => "浅橙色", 0xFFEBCD => "浅橙色", 0xFFF0F5 => "浅橙色", 0xFFF5EE => "浅橙色", 0xFFF8DC => "浅橙色", 0xFFFACD => "浅橙色", 0xFFFAF0 => "浅橙色", 0xFFFF00 => "黄色", 0xCD8500 => "深橙色", 0x8B5A00 => "深橙色", 0x61380B => "深橙色", 0x800080 => "深紫色", 0x8B008B => "深紫色", 0x960096 => "深紫色", 0xA000A0 => "深紫色", 0xAA00AA => "深紫色", 0xB400B4 => "深紫色", 0xBF00BF => "深紫色", 0xC900C9 => "深紫色", 0xD400D4 => "深紫色", 0xDF00DF => "深紫色", 0xE900E9 => "深紫色", 0xF400F4 => "深紫色", 0xFF00FF => "洋红色", 0x660066 => "紫色", 0x4D004D => "紫色", 0x330033 => "紫色", 0xFF4500 => "橙红色", 0xFF5A5A => "浅橙红色", 0xFF7F50 => "浅橙红色", 0xFF8C00 => "深橙色", 0xFFA07A => "浅橙红色", 0xFFA500 => "橙色", 0xFFB347 => "浅橙色", 0xFFC0CB => "粉红色", 0xFFD700 => "金色", 0xFFE4B5 => "浅橙色", 0xFFE4C4 => "浅橙色", 0xFFE4E1 => "浅粉红色", 0xFFE5B4 => "浅橙色", 0xFFEBCD => "浅橙色", 0xFFEFDB => "浅粉红色", 0xFFF0F5 => "浅粉红色", 0xEE82EE => "紫罗兰色", 0xC71585 => "深洋红色", 0x8B008B => "深洋红色", 0x4B0082 => "靛蓝色", 0x9400D3 => "深紫色", 0x9932CC => "深兰花紫色", 0x800080 => "深紫色", 0x6A5ACD => "板岩蓝色", 0x483D8B => "深slate蓝色", 0x663399 => "熏衣草淡紫色", 0x8A2BE2 => "蓝紫色", 0x9370DB => "灰蓝色", 0x7B68EE => "中板岩蓝色", 0x6B8E23 => "橄榄土绿色", 0x9400D3 => "深紫色", 0x8B008B => "深洋红色" );*/ function hexToRgbs($hexColor) { $hexColor = str_replace('#', '', $hexColor); $r = hexdec(substr($hexColor, 0, 2)); $g = hexdec(substr($hexColor, 2, 2)); $b = hexdec(substr($hexColor, 4, 2)); return "rgb({$r}, {$g}, {$b})"; } /*$palettes = []; foreach ($colors as $v) { $v = str_replace('#', '', $v); $v = hexdec($v); $palettes[] = $v; } foreach ($colors as $v) { echo "
"; }*/ //echo count($palettes);die; /*$palettes = array( 0x111111, 0xFFFFFF, 0x9E9E9E, 0xA48057, 0xFC85B3, 0xFF2727, 0xFFA34B, 0xFFD534, 0x47C595, 0x51C4C4, 0x2B76E7, 0x6D50ED );*/ $filename = DZZ_ROOT . '7.jpg'; $lib = isset($setting['imagelib']) ? $setting['imagelib'] : (extension_loaded('imagick') ? 'imagick' : 'gd'); if ($lib == 'gd') { $exts = getglobal('config/gdgetcolorextlimit'); $extsarr = explode(',', $exts); } else { $exts = getglobal('config/imageickallowextlimit') . ',' . getglobal('config/gdgetcolorextlimit'); $extsarr = explode(',', $exts); } $palette = new ImagePalette($filename, 1, 64, $lib, $colorint); $palettes = $palette->palette; arsort($palettes); echo '
'; echo '
'; echo '
'; echo '
'; $coarr = []; foreach ($palettes as $k => $v) { $c = new Color($k); $co = $c->toHexString(); $ro = $c->toRgb(); print_r($ro); $coarr[] = $k; echo "
$v
"; } $a = getPaletteNumber($coarr,$colorint); print_r($a);die; function getPaletteNumber($colors, $palette = array()) { if (empty($palette)) $palette = $this->palette; $arr = array(); if (is_array($colors)) { $isarray = 1; } else { $colors = (array)$colors; $isarray = 0; } foreach ($colors as $color) { $bestColor = 0x000000; $bestDiff = PHP_INT_MAX; $color = new Color($color); foreach ($palette as $key => $wlColor) { // calculate difference (don't sqrt) $diff = $color->getDiff($wlColor); // see if we got a new best if ($diff < $bestDiff) { $bestDiff = $diff; $bestColor = $wlColor; } } unset($color); $arr[] = array_search($bestColor, $palette); } return $isarray ? $arr : $arr[0]; }