iOS 獲取圖片的主題色
作者:掘金 lanlinxl
https://juejin.cn/post/7034052595320619021
需求背景
有時候我們會有這樣的需求,用戶從相冊選擇一張照片,返回展示的時候,除了展示照片還要讓整體背景也是和照片相近顏色,最近自己寫了一個圖片加水印的項目,想加上此功能,然鵝谷歌搜了一圈發(fā)現(xiàn)全是OC代碼寫的,直接使用好像還存在一些問題,所以本文分別用swift和OC實現(xiàn)相關(guān)功能。
代碼部分
主要邏輯:
將圖片按比例縮小,因為后續(xù)遍歷圖片每個像素點,循環(huán)次數(shù)是圖片width x height,如果直接原圖去遍歷,可能一次循環(huán)就要跑幾十萬、百萬次,需要時間非常久,所以要將圖片縮小。 獲取圖片的所有像素的RGB值,每組RGB使用數(shù)組存儲(可以根據(jù)自己的需求過濾部分顏色),然后用Set將數(shù)組裝起來。 統(tǒng)計Set里面相同次數(shù)最多的色值,即是整個圖片的主題色
swift實現(xiàn)代碼:

因為里面是兩個for循環(huán),時間復(fù)雜度是On^2,如果設(shè)置的width和Height比較大的話,會比較耗時,在主線程里面執(zhí)行可能會卡住,所以使用了gcd開啟子線程去執(zhí)行,完成后回到主線程執(zhí)行回調(diào)。
外部使用:
selectedImage.subjectColor({[unowned?self]?color?in
????????guard?let?subjectColor?=?color?else?{?return?}
?????????self.view.backgroundColor?=?subjectColor
????})
OC實現(xiàn)代碼:

使用效果及代碼地址

demon地址:https://github.com/lanlinxl/UIImageSubjectColor
作者:掘金 lanlinxl
https://juejin.cn/post/7034052595320619021
-End-
最近有一些小伙伴,讓我?guī)兔φ乙恍?面試題?資料,于是我翻遍了收藏的 5T 資料后,匯總整理出來,可以說是程序員面試必備!所有資料都整理到網(wǎng)盤了,歡迎下載!

面試題】即可獲取評論
圖片
表情
