php使用Imagick获取图片主色调
来源:互联网 发布:网络在线棋牌 编辑:程序博客网 时间:2024/05/22 21:21
最近做项目用到了php来获取用户图片的主色调
获取主色调 大概有两种,一种是获取色值最多的颜色来作为主色调,一种是使用图片所有颜色的平均值来作为主色调,经过对比,我们在这个地方 选用了 最多的颜色值 来做主色调。
那么,便开始获取呗。
开始的思路是 遍历整幅图片(或者通过获取图片颜色直方图,然后遍历直方图),将颜色记录到数组中, 根据容差 将相近的颜色合并, 并得到颜色的数目 根据颜色的数目排序,得到 颜色数目最多的几种颜色,
貌似处理有点慢,时间等待有点久...
后来,找到了一种方法,速度相对于上边那种快了不少, 暂时先用着了,以后再发现更好的了。可以换
处理方法贴上
实验:
$average = new Imagick('图片地址');$average->quantizeImage( 2, Imagick::COLORSPACE_RGB, 0, false, false ); // 这个里边的2表示获取 2个较多的颜色,1的话就是1个主要色调,这样$average->uniqueImageColors();$colorarr = array();$it = $average->getPixelIterator();$it->resetIterator();while( $row = $it->getNextIteratorRow() ){ foreach ( $row as $pixel ){ $colorarr[] = $pixel->getColor(); }}foreach($colorarr as $val){ echo "<div style='background-color: rgb({$val['r']},{$val['g']},{$val['b']});width:50px;height:50px;float:left;'> }
根据代码看出, 实际上颜色遍历是把 原图通过方法变为了 x * 1的图片, x为你想得到的颜色数目,,所以遍历中 只循环了x次。
到现在 较多值的 颜色 获取到了。
但是在这次项目中需求不是要得到 rgb值,而是主色是什么颜色,比如 红色,蓝色,黑色神马的
那么又开始考虑吧,根据获取到的rgb来对应颜色不就可以了。。。擦,,rgb值 0-255,0-255,0-255,好多组合,烦,求其他方法
好,方法来了:
这样 在上边的程序中 改为获取 HSL值的方法 (imagickpixel 提供了获取的方法 ),从while那里修改
while( $row = $it->getNextIteratorRow() ){ foreach ( $row as $pixel ){ $colorarr[] = $pixel->getColor(); $hslarr[] = $pixel->getHSL(); //获取hsl }}
获取到hsl后,便可根据h s l的值 很方便的判断出颜色, 参考:http://www.360doc.com/content/12/0411/13/3764603_202744651.shtml
结果:
原图:
输出结果:
记录到这里,以后用,或者找到更好方法替换它
0 0
- php使用Imagick获取图片主色调
- PHP 获取图片的主色调
- Android使用Palette获取图片主色调
- 获取图片主色调
- 【PHP】识别图片主色调
- Android 使用Palette获取Gallery图片主色调
- php 使用 imagick 处理图片--获取图片颜色等高级处理
- KMean clustering算法获取图片主色调
- KMean clustering算法获取图片主色调
- 获取图片的主色调-java
- [代码分享]UIImage:获取图片主色调
- iOS代码获取图片主色调
- php使用Imagick给图片写文字加阴影效果
- PHP中使用Imagick实现各种图片效果实例
- php ImageMagick imagick 图片处理
- iOS开发之获取图片的主色调
- iOS 获取图片的主体颜色(主色调)
- PHP中Imagick的使用
- Memcache中实体类序列化的总结
- 第九周项目6——3
- cocos2dx 3.3 魂斗罗初步尝试 游戏层(暂停段时间,以后再写)。。。
- tomcat在linux下出现乱码问题
- oracle的临时表
- php使用Imagick获取图片主色调
- android launcher 全面解析
- Spring AOP中pointcut expression表达式解析
- Unity手游之路<十一>资源打包Assetbundle
- 影像质量评价指标汇总
- js 与或运算符 || && 妙用
- python 下面的轮廓填充
- springMVC将txt文件或Excel文件中的内容上传并导入数据库
- UITableView 详解