iOS 获取图片的主题色
作者:掘金 lanlinxl
https://juejin.cn/post/7034052595320619021
需求背景
有时候我们会有这样的需求,用户从相册选择一张照片,返回展示的时候,除了展示照片还要让整体背景也是和照片相近颜色,最近自己写了一个图片加水印的项目,想加上此功能,然鹅谷歌搜了一圈发现全是OC代码写的,直接使用好像还存在一些问题,所以本文分别用swift和OC实现相关功能。
代码部分
主要逻辑:
将图片按比例缩小,因为后续遍历图片每个像素点,循环次数是图片width x height,如果直接原图去遍历,可能一次循环就要跑几十万、百万次,需要时间非常久,所以要将图片缩小。 获取图片的所有像素的RGB值,每组RGB使用数组存储(可以根据自己的需求过滤部分颜色),然后用Set将数组装起来。 统计Set里面相同次数最多的色值,即是整个图片的主题色
swift实现代码:
因为里面是两个for循环,时间复杂度是On^2,如果设置的width和Height比较大的话,会比较耗时,在主线程里面执行可能会卡住,所以使用了gcd开启子线程去执行,完成后回到主线程执行回调。
外部使用:
selectedImage.subjectColor({[unowned self] color in
guard let subjectColor = color else { return }
self.view.backgroundColor = subjectColor
})
OC实现代码:
使用效果及代码地址
demon地址:https://github.com/lanlinxl/UIImageSubjectColor
作者:掘金 lanlinxl
https://juejin.cn/post/7034052595320619021
-End-
最近有一些小伙伴,让我帮忙找一些 面试题 资料,于是我翻遍了收藏的 5T 资料后,汇总整理出来,可以说是程序员面试必备!所有资料都整理到网盘了,欢迎下载!
面试题
】即可获取评论