帝国模板之家为广大用户提供专业、一站式建站服务。

网站开发

网站开发栏目,介绍前端、后台、服务器、数据库、建站工具等实用网站开发教程。

当前位置:首页 > 教程 > 网站开发 > 正文

利用PHP(color-thief)组件给图片按照颜色进行分类

帝国模板之家 2020-10-20 网站开发 评论

本文主要讲解使用php(color-thief)组件,获取获取图片的RGB值,然后对图片进行分类。具体步骤如下:

1.安装组件

composer require ksubileau/color-thief-php

2.从图像中获取主色

require_once 'vendor/autoload.php';
use ColorThief\ColorThief;
$dominantColor = ColorThief::getColor($sourceImage);

函数getPalette参数(图片地址, 获取颜色数量上线, 按照多少像素平均值来计算[即提取精度1像素为最高,精度越高越卡]);

函数返回一个由三个整数值组成的数组,与主颜色的RGB值(红色、绿色和蓝色)相对应。

3.将获取到的颜色转换为HSV模式

//转换颜色模式
require_once './hsl/RBG.php';
$HSV = new RGB(红,绿,蓝);//导入刚才获得的RGB值
$HSV=$HSV->toHSV();
$HSV=(array)$HSV;
$HSV_h=round($HSV["*_hue"]);
$HSV_s=round($HSV["*_saturation"]*100);
$HSV_v=round($HSV["*_value"]/255*100);

4.以hsv模式判断颜色

function is_colors($h,$s,$v) {
	//误差率2%
	if($s>=15 && $v>=25){
		//有饱和度&有亮度 =有颜色
		if(($h>=0 && $h<=20) || ($h>310 && $h<=360)){
			//红色
			return '红色';
		}elseif($h>20 && $h<=35){
			//橙色
			return '橙色';
		}elseif($h>35 && $h<=75){
			//黄色
			return '黄色';
		}elseif($h>75 &&  $h<=160){
			//绿色
			return '绿色';
		}elseif($h>160 && $h<=200){
			//青色
			return '青色';
		}elseif($h>200  && $h<=260){
			//蓝色
			return '蓝色';
		}elseif($h>260 && $h<=310){
			//紫色
			return '紫色';
		}
	}else{
		//判断黑白灰
		if($v>90){
			//白色
			return '白色';
		}else if($v<25){
			//黑色
			return '黑色';
		}else{
			//灰色
			return '灰色';
		}
	}
}

误差率2%,毕竟颜色太接近的颜色每个人的评估标准是不一样的,但目前绝大多数图片都可以准确的判断进行分类。

https://github.com/ksubileau/color-thief-php

这世上无忧无虑的人,反而相对寿命会长点。

已有 位小伙伴发表了看法

欢迎 发表评论

  • 匿名发表

关于

帝国cms模板

网页插件

帝国模板之家 | www.moyouyouw.cn

本站所有模板/文章除标明原创外,均来自网络转载,版权归原作者所有,如果有侵犯到您的权益,请联系站长删除,谢谢! 寻找帝国cms模板首选帝国模板之家,用心做站,上线至今广受好评,值得信赖!

  • 交流群1:帝国cms交流群1
  • 交流群2:帝国cms交流群2
在线QQ 给我留言