php Imagick获取图片RGB颜色值

yipeiwu_com5年前PHP代码库

很多图片站点都会根据用户上传的图片检索出图片的主要颜色值,然后在通过颜色搜索相关的图片。

之前按照网上的方法将图片缩放(或者马赛克)然后遍历每个像素点,然后统计处RGB次数最多的值,这做法效率太低而且取到的RGB值不够精确。之后才发现使用Imagick的quantizeImage方法能够很方便的取到图片中平均的RGB值.

$average = new Imagick("xiaocai.jpg");
$average->quantizeImage( 10, Imagick::COLORSPACE_RGB, 0, false, false );
$average->uniqueImageColors();
function GetImagesColor( Imagick $im ){
$colorarr = array();
$it = $im->getPixelIterator();
$it->resetIterator();
while( $row = $it->getNextIteratorRow() ){
foreach ( $row as $pixel ){
// www.jb51.net
$colorarr[] = $pixel->getColor();
}
}
return $colorarr;
}
$colorarr = GetImagesColor($average);
foreach($colorarr as $val){
echo "<div style='background-color: rgb({$val['r']},{$val['g']},{$val['b']});width:50px;height:50px;float:left;'></div>";
}

相关文章

php递归法读取目录及文件的方法

本文实例讲述了php递归法读取目录及文件的方法。分享给大家供大家参考。具体如下: 这里实例分析php递归法读取目录及文件的方法,代码中包含较为详尽的注释,如下所示: <?...

PHP获取url的函数代码

复制代码 代码如下: function geturl($url) { $ch = curl_init(); $timeout = 5; curl_setopt($ch, CURLOPT_...

php 地区分类排序算法

写一个函数,将数据$array = array(    0=>array("","河北"),    1=>arra...

探讨Hessian在PHP中的使用分析

探讨Hessian在PHP中的使用分析

什么是Hessian  Hessian是由caucho提供的一种开源的远程通讯协议。  采用二进制 RPC 协议,基于 HTTP 传输,服务器端不用另开放防火墙端口。  协议的规范是公开...

php中http与https跨域共享session的解决方法

遇到了HTTP、HTTPS协议下session共享解决cookie失效的问题,这里提供一个临时解决办法。 实现原理:把session id设置到本地的cookie。 如下: 复制代码 代...