```
$pictureColor = new pictureColor();
$picUrls = array('./1.png','./2.png','./4.png','./3.jpg');
foreach ($picUrls as $key=>$url){
//获取色值
$color=$pictureColor->hexName($url);
//获取颜色名称
$colorName=$pictureColor->colorName($url);
echo "<img style='width:100px;float: left;' src='$url'>";
echo "<div style='width: 100px;height: 100px;float: left;'>$colorName</div>";
}
class pictureColor
{
/**
* 获取颜色使用库类型
*/
public $type = 'gd';
/**
* 十六进制
*/
public $hex = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F');
/**
* 获得图片色系
*
* @param string $file
* @return string
*/
public function colorName($file)
{
if (empty($file)) {
return false;
}
$rgb = $this->getRGB($file);
$hsl = $this->RGB2HSL($rgb);
return $this->getColorName($hsl);
}
/**
* 取得图片十六进制
*
* @param string $file
* @return string
*/
public function hexName($file)
{
try {
if (empty($file)) {
return false;
}
$rgb = $this->getRGB($file, $this->type);
$color = $this->RGB2Hex($rgb);
if (strlen($color) > 6) $color = substr($color, 1, 6);
return $color;
} catch (Exception $e) {
echo $e;
}
}
/**
* 取得图片RGB
*
* @param string $file
* @param string $type gd/gm
* @return array
*/
public function getRGB($file)
{
if (empty($file)) {
return false;
}
$imageSize = getimagesize($file);
if ($imageSize['mime'] == 'image/jpeg') {
$img = imagecreatefromjpeg($file);
} elseif ($imageSize['mime'] == 'image/png') {
$img = imagecreatefrompng($file);
} elseif ($imageSize['mime'] == 'image/gif') {
$img = imagecreatefromgif($file);
}
$w = imagesx($img);
$h = imagesy($img);
$r = $g = $b = 0;
for ($y = 0; $y < $h; $y++) {
for ($x = 0; $x < $w; $x++) {
$rgb = imagecolorat($img, $x, $y);
$r += $rgb >> 16;
$g += $rgb >> 8 & 255;
$b += $rgb & 255;
}
}
$pxls = $w * $h;
$r = (round($r / $pxls));
$g = (round($g / $pxls));
$b = (round($b / $pxls));
return array('0' => $r, '1' => $g, '2' => $b);
}
public function RGB2Hex($rgb)
{
$hexColor = '';
$hex = $this->hex;
for ($i = 0; $i < 3; $i++) {
$r = null;
$c = $rgb [$i];
$hexAr = array();
while ($c > 16) {
$r = $c % 16;
$c = ($c / 16) >> 0;
array_push($hexAr, $hex [$r]);
}
array_push($hexAr, $hex [$c]);
$ret = array_reverse($hexAr);
$item = implode('', $ret);
$item = str_pad($item, 2, '0', STR_PAD_LEFT);
$hexColor .= $item;
}
return $hexColor;
}
/**
* RGB转HSL
*
* @param array $rgb
* @return array
*/
public function RGB2HSL($rgb)
{
list($r, $g, $b) = $rgb;
$r /= 255;
$g /= 255;
$b /= 255;
$max = max($r, $g, $b);
$min = min($r, $g, $b);
$delta = $max - $min;
$l = ($max + $min) / 2;
if ($delta == 0) {
$h = 0;
$s = 0;
} else {
$s = ($l < 0.5) ? $delta / ($max + $min) : $delta / (2 - $max - $min);
$deltar = ((($max - $r) / 6) + ($max / 2)) / $delta;
$deltag = ((($max - $g) / 6) + ($max / 2)) / $delta;
$deltab = ((($max - $b) / 6) + ($max / 2)) / $delta;
if ($r == $max) {
$h = $deltab - $deltag;
} else if ($g == $max) {
$h = (1 / 3) + $deltar - $deltab;
} else if ($b == $max) {
$h = (2 / 3) + $deltag - $deltar;
}
$h += ($h < 0) ? 1 : ($h > 1 ? -1 : 0);
}
return array($h * 360, $s * 100, $l * 100);
}
/**
* HSL对应颜色名称
*
* @param array $hsl
* @return string
*/
public function getColorName($hsl)
{
$colorarr = array(
'0, 100, 50' => '红色',
'30, 100, 50' => '橙色',
'60, 100, 50' => '黄色',
'120, 100, 75' => '绿色',
'240, 100, 25' => '蓝色',
'300, 100, 25' => '紫色',
'255, 152, 191' => '粉红',
//'136, 84, 24' => '棕色',
'0, 0, 50' => '灰色',
'0, 0, 0' => '黑色',
'0, 0, 100' => '白色',
);
$distarr = array();
foreach ($colorarr as $key => $val) {
list($h, $s, $l) = explode(',', $key);
$distarr[$key] = pow(($hsl['0'] - $h), 2) + pow(($hsl['1'] - $s), 2) + pow(($hsl['2'] - $l), 2);
}
asort($distarr);
list($key) = each($distarr);
return $colorarr[$key];
}
}
```
- 课程介绍
- thinkphp5.0
- 安装
- 开发规范
- 目录结构
- 配置参数
- 系统常量
- tp5自带的函数
- 助手函数
- 扩展类库
- 基本类库
- Workerman
- think-queue
- 验证码
- 图片
- 权限认证
- 课前准备
- 数据库设计
- 模块设计
- 管理员管理
- 添加
- 编辑
- 删除和批量删除
- 列表页
- 实列
- 权限管理
- 操作日志
- 基于行为的日记录
- 行为日志的扩展
- 助手类库
- 自建函数
- 将数组转成uri字符串
- 获取当前服务器的IP
- curl-post
- 截取文字中间的字符串
- 检查中文姓名
- 省市区分别截取
- 抽奖概率问题
- 短信邮箱模板替换
- 生成csv
- PHP 图片转base64
- 银行卡验证
- json返回接口封装
- 无限极分类
- 病毒
- xml和数组互转
- xml转成数组
- 数组转xml
- tp控制器相关
- 获取thinkph5下控制器和方法名
- 后台查询的简单封装
- 网址信息
- 获取网站logo
- 判断url是否存在
- 获取title
- 判断远程文件是否存在
- 获取页面所有链接
- 过滤
- 截取
- 时间
- 获取服务器信息
- 根据id生成唯一邀请码
- 随机颜色
- 数组字符串互换
- 创建多级目录
- 懒人查询
- 时间和时间戳转换
- 房间id生菜
- 获取需要的数组元素
- 文件和文件夹
- 文件类库
- 文件夹
- 七牛云
- 七牛云运用场景
- 七牛云使用实例
- 邮箱
- 邮箱验证
- 邮箱发送
- 数据库
- 数据库在thinkphp中的补充方法
- 备份和安全
- sql执行
- 数据库备份2
- 时间日历
- 时间格式化
- 日历
- 图片相关
- 自动获取图片主题颜色
- 获取html中的图片路径
- 获取图片场景
- 获取图片实践
- 图片处理类
- 图片处理场景
- 图片处理实践
- 数据验证分析
- 身份证相关
- 新闻
- 自建类库
- 简易分类库
- php 压缩CSS代码
- 身份证
- 分词和抽词
- 分词应用场景
- 分词实践
- 中文转拼音
- 中文转拼音场景
- 中文转拼音实践
- 二维码操作
- 二维码场景
- 二维码实践
- 短地址
- PHPWord
- 插件化
- 插件扩展库
- 插件列表
- 插件安装和卸载
- 插件实践
- 插件的离线安装
- 计划任务
- 计划任务安装
- 计划任务实践
- 定时器
- 注册登录
- 普通登录注册
- 第三方登录注册
- jwt接口登录注册
- 短信
- 飞鸽短信
- 阿里短信
- 消息队列
- 网站地图
- 全站静态化
- 缓存
- 文件导出
- PDF生成
- phpword
- PHPExcel
- 其他类库
- 百度
- 百度语音
- 快递
- 跨域问题
- 宝塔
- 搜索记录