前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >swift图片颜色占比分析

swift图片颜色占比分析

作者头像
用户6094182
发布2019-08-23 18:00:44
9710
发布2019-08-23 18:00:44
举报
文章被收录于专栏:joealzhoujoealzhoujoealzhou
swift图片颜色占比分析
extension UIImage {
    func scaleTo(size: CGSize) -> UIImage? {
        UIGraphicsBeginImageContextWithOptions(size, false, 1.0)
        self.draw(in: CGRect(x: 0, y: 0, width: size.width, height: size.height))
        let newImg = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        return newImg
    }
    
    /// 一张图颜色占比 取十种颜色
    func colorRate() -> [Double] {
        // 把 UIImage 转换成 CGImage Data
        let provider = self.cgImage?.dataProvider
        let pixeData = provider?.data
        guard let pxData = pixeData else {
            return []
        }
        guard let data = CFDataGetBytePtr(pxData) else {
            return []
        }
        let dataLength = CFDataGetLength(pxData)
        let numberOfColorComponents = 4 // R,G,B, and A
        
        // 用来装 color ,key 为 R-G-B 字符串,value 为出现次数
        var colors = [String: Double]()
        var colorCount: Double = 0
        var i = 0
        while i < dataLength {
            i += numberOfColorComponents
            if data[i + 3] != 0 {//非透明
                colorCount += 1
                let red = data[i]
                let green = data[i + 1]
                let blue = data[i + 2]
                let result = "\(red)-\(green)-\(blue)"
                if !colors.keys.contains(result) {
                    colors[result] = 1
                } else {
                    colors[result] = colors[result]! + 1.0
                }
            }
        }
        
        let  colorValues = colors.values.sorted { $0 > $1 }
        var colorRates = [Double]()
        for (index, item) in colorValues.enumerated() {
            if index < 10 {
                let rate = item / colorCount
                colorRates.append(rate)
            }
        }
        return colorRates
    }
}

调用以上方法,终端输出: [0.3862848497311907, 0.093752754193718965, 0.088868650665413204, 0.088369223537706751, 0.018655072123152854, 0.017913275948177092, 0.011376656188489674, 0.0076897088633626131, 0.0057727900349598986, 0.0051558506419107494]

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.08.30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • swift图片颜色占比分析
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档