使用php+imagick扩展 来获取图片主色调

引子

做为一个野路子的程序员, 看到其他app上的一些功能点 总爱去试试

前两天在用快手的app, 发现视频列表展示的图片在还没加载出来的时候

不像通常做法放一个默认的背景图, 而是用了一个纯色背景

等图片加载出来时候 发现纯色背景跟图片颜色很接近

尝试

个人感觉像是使用了 图片主色调或者图片 点最多的颜色值

实现思路最开始是 遍历整幅图片(或者通过获取图片颜色直方图,然后遍历直方图), 将每个点颜色进行记录 然后进行获取颜色值最多的,或者平均值之类

但是发现一张图片运行下来需要很长时间

代码

经过尝试, php + imagick 有方法可以直接提取主色调, 记录

$image = new \Imagick($file); //$file 图片存储地址或者url地址

$image->quantizeImage(1, \Imagick::COLORSPACE_RGB, 0, false, false); //获取到只剩1个颜色值, 也可以多取几个

$image->uniqueImageColors();

$iter = $image->getPixelIterator();

$iter->resetIterator();

$row = $iter->getNextIteratorRow();

$color = $row[0]->getColor(); //获取到第一个颜色点的颜色

echo $color['r'];

echo $color['g'];

echo $color['b'];

简单的处理, 就可以得到 近似主观主色调的颜色了.

产品上使用的时候 可以通过调整颜色的饱和度或者亮度 来让颜色更利于展示

效果对比

扒取了快手的数据 效果对比:

快手具体使用的什么方法就不知道了.

不过这个简单的方法可以用在一些简单的场景, 对于量级不是很大的地方完全ok

输出颜色名称

获取到颜色值 感觉还不够,主色到底是 红色,蓝色,黑色 还是神马的。得描述出来

颜色rgb来对应颜色名称, 0-255,0-255,0-255 有N多中组合

这里尝试 利用HSL值 来区分颜色名称 $hsl = $row[0]->getHSL();

PHP调整图片饱和度,php使用Imagick获取图片主色调相关推荐

  1. 实现图片中文的识别和获取图片上文字的坐标(java实现)

    实现图片中文的识别和获取图片上文字的坐标(java实现)            现在利用python来进行图片的文字识别较为普遍,但是如果我们利用常用的家庭电脑来识别,需要的时间比较长,达到20~30 ...

  2. 如何在Python中获取图片分辨率?——Python实现获取图片分辨率的代码及详解。

    如何在Python中获取图片分辨率?--Python实现获取图片分辨率的代码及详解. 在进行图片处理或者图片分析的时候,获取图片的分辨率信息是必不可少的.Python提供了许多库可以方便地获取图片的分 ...

  3. python 通过图片(原图)精确获取图片拍摄的位置

    想要悄悄的获取某人的位置,只需通过拍摄的照片,就能可以实现. 此方法需要用到识别图片元数据的库. pip3 install exifread 1. 粗获取 获取拍摄照片的经纬度,时间,设备信息.这里使 ...

  4. Unity for IOS 加载手机相册图片以及打开相机拍照获取图片

    Unity for IOS 加载手机相册图片以及打开相机拍照获取图片 最近想做一个使用unity for IOS获取手机图片的功能,所以就研究了一下 这里我们需要创建两个objective-c文件,最 ...

  5. python下载图片并保存_Python爬虫获取图片并下载保存至本地的实例

    1.抓取煎蛋网上的图片. 2.代码如下: import urllib.request import os #to open the url def url_open(url): req=urllib. ...

  6. iOS 根据图片URL从本地相册获取图片

    最近做一个聊天的项目,需要发送图片后读取本地图片显示到列表里.刚开始的时候,天真的认为可以用SDWebImage直接加载,然后并不能行. 于是在网上搜了搜,如何根据从相册获取的UIImagePicke ...

  7. jquery 获取元素图片_【jQuery】获取图片真实宽高

    jQuery有没有获取图片实际尺寸的方法? 就是图片文件的实际尺寸,而不是添加了css样式之后的尺寸. 肥肠真实,如假包换! //code from http://caibaojian.com/jqu ...

  8. php根据图片地址获取图片原始高宽,Js获取图片原始宽高的实现代码

    如果我们页面看到的图片都是缩略图,那就需要做个图片点击放大效果,那么怎样获取图片的原始宽高呢?方法如下: //获取图片原始宽度 function getNaturalWidthAndHeight(im ...

  9. python 通过图片(原图)精确获取图片拍摄的位置,时间,设备等信息

    想要悄悄的获取某人的位置,只需通过她拍摄的照片,就能可以实现.此方法需要用到识别图片元数据的库.这里操作是在虚拟机ubuntu上,使用python最好是在3.6及以上. pip3 install ex ...

最新文章

  1. 解决机器学习问题的一般流程
  2. linux 下修改最大文件数
  3. php多分支结构 案例,第4天 PHP分支、循环结构
  4. 微服务指南走北(五):什么样的服务才可以说是微服务?
  5. 运行cmd状态下MySQL导入导出.sql文件
  6. IOS沙盒中的Documents、Library、tmp区别
  7. db h2 数据类型_H2数据库函数及数据类型概述
  8. MySQL Date and Time Functions(日期和时间)
  9. php7 runkit,runkit - PHP 7 中文文档
  10. AngularJs的TDD
  11. Jackson的JSON转对象,忽略不需要的字段
  12. PSP看电视软件测试,实战测试:PSP上运行Windows 95
  13. Android 动画之 View动画 和 帧动画
  14. 心田花开:小学三年级语文下册古诗词整理【全】
  15. PB 各种小技巧(二)
  16. 数字战疫|央视聚焦闵行,有信云助力上海数千家企业复工复产
  17. 继被Twitter永久封杀后!Sci-Hub再遭英国网络运营商封禁!
  18. 弘辽科技:商家直通车操作
  19. 如何调整图片像素大小
  20. 解决WiFi信号弱小妙招

热门文章

  1. 数组作为函数参数的理解
  2. 设计模式之解释器模式
  3. visual foxPro基本指令
  4. nginx负载均衡的配置
  5. 移动端H5网页调试之eruda
  6. 为什么快捷指令无法将媒体转换为文本_AppStore今日分享 双十一淘宝自动养猫指令和几款限免...
  7. SLF4j使用、统一系统中所有的日志记录到slf4j
  8. 【解决】Linux下搜狗输入法无法显示候选框
  9. alexa作弊大全经典收藏版
  10. 架构设计:宏观/中观/微观架构