【PHP】识别图片主色调

一、适用情景:如http://www.teapic.com/list.htm,根据颜色列出相应图片。



二、主程序及API解释:

<?phpclass MajorColor
{//参考颜色protected $_colors = null;//容差protected $_tolerance = 80;//忽略的颜色protected $_ignoreColors = array();//支持的图片类型protected $_funcs = array('image/png' => 'imagecreatefrompng', 'image/jpeg' => 'imagecreatefromjpeg', 'image/gif' => 'imagecreatefromgif');public function __construct(array $colors = null) {if(null !== $colors) {$this->_colors = $colors;}}public function setColors(array $colors) {$this->_colors = $colors;}public function setTolerance($tolerance) {$this->_tolerance = $tolerance;}public function setIgnoreColors($colors) {$this->_ignoreColors = $colors;}public function _isValidColor($confVal, $val) {if(is_array($confVal)) {return $val >= $confVal[0] && $val <= $confVal[1];} else {return $val >= $confVal - $this->_tolerance && $val <= $confVal + $this->_tolerance;}}public function getOrderedColors($pic) {$size = getimagesize($pic);if(!$size) {return false;}$width = $size[0];$height = $size[1];$mime = $size['mime'];$func = isset($this->_funcs[$mime]) ? $this->_funcs[$mime] : null;if(!$func) {return false;}$im = $func($pic);if(!$im) {return false;}$total = $width * $height;$nums = array();for($i = 0; $i < $width; $i++) {for($m = 0; $m < $height; $m++) {$color_index = imagecolorat($im, $i, $m);$color_tran = imagecolorsforindex($im, $color_index);$alpha = $color_tran['alpha'];unset($color_tran['alpha']);if(100 < $alpha || in_array($color_tran, $this->_ignoreColors)) {continue;}foreach ($this->_colors as $colorid => $color) {if($this->_isValidColor($color['red'], $color_tran['red'])&& $this->_isValidColor($color['green'], $color_tran['green'])&& $this->_isValidColor($color['blue'], $color_tran['blue'])) {$nums[$colorid] = isset($nums[$colorid]) ? $nums[$colorid] + 1 : 1;}}}}imagedestroy($im);arsort($nums);return $nums;}public function getMajorColor($pic) {$nums = $this->getOrderedColors($pic);$keys = array_keys($nums);return $keys[0];}
}

1.void setColors(array $colors)

设置可选颜色,即上图中“全部颜色”下的所有颜色(白、灰、黑...)


2.void setTolerance(int $tolerance)

设置容差,比如绿色的RGB值为(0,255,0),如果设置容差为40,那么-40<=R<<40 && 215<=G<=295 && -40<=B<=40范围内的所有颜色将被视为绿色。

此方法用于大致区别各颜色。


3.void setIgnoreColors(array $colors)

设置不需考虑的颜色。如大多图片的背景是白色,而我们显然不希望结果是白色,此时可调用此方法简略白色。


4.array getOrderedColors($pic)

根据$pic获取各种颜色(用setColors设置的颜色)的匹配数量,按匹配量由高到低排列

参数$pic是待检测图片的路径


5.mix getMajorColor($pic)

内部调用getOrderedColors,返回匹配量最高的颜色的key


三、$colors的格式及范围确定

1.如果$colors中的各种颜色差别很明显,我们只需简单的传入颜色值,内部会根据setTolerance设置的容差来区别各颜色。

$colors = array(1 => array('red' => 0xff, 'green' => 0xff, 'blue' => 0xff),2 => array('red' => 0xc0, 'green' => 0xc0, 'blue' => 0xc0),2 => array('red' => 0x00, 'green' => 0x00, 'blue' => 0x00),
);


2.setTolerance设置容差的方法只能大致区分各种颜色,如果需要更精确的控制,则需要分别设置某一颜色的R、G、B范围

$colors = array(1 => array('red' => array(189, 230), 'green' => array(189, 230), 'blue' => array(189, 230)),2 => array('red' => array(0, 37), 'green' => array(0, 37), 'blue' => array(0, 37)),3 => array('red' => array(128, 255), 'green' => array(0, 76), 'blue' => array(0, 100)),
);
需要进行一系列的微调,直至能明显区分各种颜色。


四、demo下载

http://download.csdn.net/detail/xiaodao1986/4479821

积分不够了,赚点积分。真没积分的朋友可以联系我QQ:88433062


五、PHP交流/兼职群335343801

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/351861.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

色调列表

NamedNumericColor NameHex RGBDecimal LightPink浅粉红#FFB6C1255,182,193 Pink粉红#FFC0CB255,192,203 Crimson猩红 (深红)#DC143C220,20,60 LavenderBlush淡紫红#FFF0F5255,240,245 PaleVioletRed弱紫罗兰红#DB7093219,112,147 HotPink热情的粉红#FF69B4255,105,180 DeepPin…

图片调色学习

色相环 色相混合正红&#xff08;0&#xff09;正黄&#xff08;60&#xff09;&#xff0c;透明度为&#xff08;50%&#xff09;即红黄等比例混合橙色&#xff08;30&#xff09; (060&#xff09;/230 真实调整透明度混合出并不一定为两者均值的色相,需要选择不同的混合方法…

Seaborn--调色板(二)

调色板 颜色很重要 color_palette()能传入任何Matplotlib所支持的颜色 color_palette()不写参数则默认颜色 set_palette()设置所有图的颜色import numpy as np import seaborn as sns import matplotlib.pyplot as plt %matplotlib inline sns.set(rc{"figure.figsize&qu…

色温,色阶,色调,色调

色温 对于外拍人像来说&#xff0c;需要注意的问题很多&#xff0c;例如环境选择、模特的服装、发型、配用的道具、拍摄时的姿势以及使用的器材等等。但从技术角度来说&#xff0c;还有很多在拍摄时需要注意的地方&#xff0c;例如白平衡的控制、焦点选择、机内色彩的调整、锐…

“莫兰迪色系” 高级灰

“莫兰迪色系”指的是高级灰色调&#xff0c;不鲜亮&#xff0c;仿佛蒙上一层灰调&#xff0c;低调有内涵&#xff0c;舒缓雅致&#xff0c;略显冷静&#xff0c;有一种性冷淡风&#xff0c;”高级灰“的梗就是出自这里。

10种舒服的颜色及配色推荐

前言 有一些配色的建议分享给大家。 颜色 RGB值 该部分RGB值来自 科学上最令人舒服的十种颜色&#xff08;RGB 19CAAD 8CC7B5 A0EEE1 BEE7E9 BEEDC7 1.R 25 G 202 B 173 2. R 140 G 199 B 181 3.R 160 G 238 B 225 4.R 190 G 231 B 233 5.R 190 G 237 B 199 D6D5B7 D1BA74…

【公众号】高级配色“马卡龙调色板”必须码住!

“马卡龙色系”的公众号模板也太“甜蜜”了吧&#xff01;配色绝了 哈喽大家好&#xff01;今天小编又带着刚出炉的“公众号模板”来分享啦&#xff01; 今天有点糖分超标了哦&#xff0c;赶快收藏好&#xff0c;以备不时之需吧&#xff01; 可用的范围&#xff1a;甜品店、…

如何调出阿宝色?

1.载入图片&#xff0c;调整曲线和色阶 2.合并可见图层&#xff0c;执行 图像-》模式-》lab颜色&#xff0c;切换到通道面板&#xff0c;选择a通道&#xff0c;Ctrla全选&#xff0c;选择复制&#xff0c;粘贴到通道b上 3.调整曲线 4.合并可见图层&#xff0c;调整色相和饱…

[Flink] Flink On Yarn(yarn-session.sh)启动错误

在Flink上启动 yarn-session.sh时出现 The number of requested virtual cores for application master 1 exceeds the maximum number of virtual cores 0 available in the Yarn Cluster.错误。 版本说明&#xff1a; Hadoop&#xff1a; 3.3.4 Flink&#xff1a;1.17.1 问题…

基于Python的栅格数据地理加权回归

本文结合实例详细讲解了如何使用Python对栅格数据进行地理加权回归&#xff08;GWR&#xff09;和多尺度地理加权回归分析&#xff08;MGWR&#xff09;&#xff0c;关注公众号GeodataAnalysis&#xff0c;回复20230605获取示例数据和代码&#xff0c;包含整体的写作思路&#…

org.apache.commons.io.monitor+logback.xml+vue实时显示当前日志信息

使用记录&#xff1a; 第一&#xff1a; 刷新页面导致session问题 可以在java的session中记录&#xff0c;如果是同一个客户重新链接的话&#xff0c;直接返回java的session的数据ssemiter给前端&#xff0c;前端自动接着获取日志。 ssemiter&#xff1a;详情自行百度ssemit…

【Spring Boot学习】Spring Boot的创建,第一个Spring Boot页面.

前言: 大家好,我是良辰丫,前面几篇文章,我们系统的学习了Spring框架,今天开始,我们就要学习更高级的SpringBoot框架了,不要着急哦,我们一起畅游SpringBoot框架的世界.&#x1f48c;&#x1f48c;&#x1f48c; &#x1f9d1;个人主页&#xff1a;良辰针不戳 &#x1f4d6;所属专…

EasyRecovery14免费并且超好用的数据恢复工具

相信不少小伙伴都遇到过误删文件或者文件丢失的时候&#xff0c;尤其是对于工作或者学习所需的重要文件来说&#xff0c;更让人不能接受。这个时候大家也可以通过数据恢复软件来进行找回&#xff0c;但是现在很多这种软件都需要付费才能够满足你的需求。那么有什么免费的恢复工…

EasyRecovery2020数据恢复软件激活码序列号秘钥下载及使用恢复教程

我们平时肯定都遇到过不小心把重要文件删除的情况&#xff0c;其实这些数据还是有很大几率可以恢复的&#xff0c;而且恢复起来并不难。 今天小编给大家推荐一个比较老牌的数据恢复软件EasyRecovery。 如回收站作为一个临时存放被删除文件的居所&#xff0c;有着预防用户误删…

EasyRecovery14最新个人版数据恢复工具

EasyRecovery14Mac最新版是一款功能非常强大的文件数据恢复工具软件&#xff0c;EasyRecovery14Mac最新版有着极为强大的数据恢复功能&#xff0c;可以帮助用户将各种丢失或者误删除的文件数据完美恢复&#xff0c;不过需要健康度高的文件才能恢复&#xff0c;感兴趣的用户快来…

easyrecovery数据恢复软件V15最新版本介绍

easyrecovery恢复文件介绍 easyrecovery是一款功能非常强大的数据恢复软件&#xff0c;不仅能够恢复手机等终端被删除的文件&#xff0c;还可以恢复从硬盘上删除的文件&#xff0c;而且操作非常简单&#xff0c;下面就跟着小编一起来看一下吧。电脑使用时间很长之后大家应该都…

数据恢复Ontrack EasyRecovery 15中文免费版2023最新

Ontrack EasyRecovery Crack Professional是一个全面的备份和恢复实用程序&#xff0c;可以从多个数据丢失事件中恢复文件&#xff0c;例如常见的意外删除、更严重的&#xff08;有时是病毒引起的&#xff09;分区或驱动器格式化&#xff0c;甚至硬盘严重损坏后的数据丢失。免费…

Ontrack易恢复最新版EasyRecovery数据恢复软件功能

Ontrack EasyRecovery易恢复是领先的数据恢复软件。可以解决任何数据丢失问题。 版本区别对比 EasyRecovery_Home个人版: 家用数据恢复&#xff1a;常规恢复各种文档&#xff0c;音乐&#xff0c; 照片&#xff0c;视频等数据。 EasyRecovery_Professional专业版: 高级数据恢…

EasyRecovery数据恢复软件V15专业版使用操作流程

EasyRecovery使用心得&#xff1a;一款专业的数据恢复软件&#xff0c;可以根据你想要恢复的文件类型恢复数据内容&#xff0c;需要有一定电脑基础的用户才能够顺利使用&#xff0c;想要使用所有功能需要下载完整版才能使用。 下面是EasyRecovery的操作流程&#xff1a; 1、首…

easyrecovery工具2023最新版一键恢复丢失数据免费下载

通常&#xff0c;许多人会将工作或生活中的数据存储在我们的计算机上。很多时候&#xff0c;由于我们的误操作或其他一些问题&#xff0c;很容易错误地删除一些文件和数据。特别是&#xff0c;一些计算机故障总是会导致数据丢失&#xff0c;这是非常麻烦的。当需要重新安装系统…