美文网首页
swift图片颜色占比分析

swift图片颜色占比分析

作者: joeal | 来源:发表于2018-08-30 14:24 被阅读47次

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
    }
}
test3.jpg

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

相关文章

  • swift图片颜色占比分析

    swift图片颜色占比分析 调用以上方法,终端输出:[0.3862848497311907, 0.09375275...

  • ImageIO In Swift

    ImageIO In Swift CGImageSource 图片上下文,解析出图片数据(图片宽高,颜色空间,图片...

  • 商业数据分析中如何进行占比分析

    占比分析用于分析不同个体在总体中的占比。之前的文章,我们了解到占比分析中的 人群占比分析、地理位置占比分析。本篇,...

  • 34招精通商业智能数据分析:占比分析

    占比分析用于分析不同个体在总体中的占比。本章实例包含人群占比分析、地理位置占比分析等。 1.群体占比分析 商业场景...

  • 获取图片每像素颜色值

    关于获取图片每像素颜色值 以下是oc及swift实现 swift: object-c:

  • swift 颜色转为图片

    /// 将颜色转换为图片////// - Parameter color: UIColor/// - Return...

  • 数据分析 -04 电影数据分析

    这篇是对电影数据的简单分析,任务是分析各类电影的烂片占比。 1、数据查看 2、数据清洗 3、分析不同类型烂片占比 ...

  • Swift4 修改导航条样式

    swift4 -修改导航条颜色 背景颜色 背景图片 1 修改导航条背景颜色 navigationBar.barTi...

  • 1厘米的宽度1万米的深度!

    一. 一上午都在分析销售数据,销量占比,销售额占比,产品销售结构,同比环比,客单价,人均客单价。 1.分析出来不同...

  • Swift-颜色创建图片

    项目开发中有时候会遇到单色图片,每次都需要UI切图,其实可以根据颜色创建图片,扩展UIImage,代码如下: 测试代码:

网友评论

      本文标题:swift图片颜色占比分析

      本文链接:https://www.haomeiwen.com/subject/ivnrwftx.html