> 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];
}