zoukankan      html  css  js  c++  java
  • iOS UIImage:获取图片主色调

    本文转载至 http://www.wahenzan.com/a/mdev/ios/2015/0325/1677.html

     

    -(UIColor*)mostColor{

        

        

    #if __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_6_1

        int bitmapInfo = kCGBitmapByteOrderDefault | kCGImageAlphaPremultipliedLast;

    #else

        int bitmapInfo = kCGImageAlphaPremultipliedLast;

    #endif

        

        //第一步 先把图片缩小 加快计算速度. 但越小结果误差可能越大

        CGSize thumbSize=CGSizeMake(50, 50);

        

        CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();

        CGContextRef context = CGBitmapContextCreate(NULL,

                                                     thumbSize.width,

                                                     thumbSize.height,

                                                     8,//bits per component

                                                     thumbSize.width*4,

                                                     colorSpace,

                                                     bitmapInfo);

        

        CGRect drawRect = CGRectMake(0, 0, thumbSize.width, thumbSize.height);

        CGContextDrawImage(context, drawRect, self.CGImage);

        CGColorSpaceRelease(colorSpace);

        

        

        

        //第二步 取每个点的像素值

        unsigned char* data = CGBitmapContextGetData (context);

        

        if (data == NULL) return nil;

        

        NSCountedSet *cls=[NSCountedSet setWithCapacity:thumbSize.width*thumbSize.height];

        

        for (int x=0; x<thumbSize.width; x++) {

            for (int y=0; y<thumbSize.height; y++) {

                

                int offset = 4*(x*y);

                

                int red = data[offset];

                int green = data[offset+1];

                int blue = data[offset+2];

                int alpha =  data[offset+3];

                

                NSArray *clr=@[@(red),@(green),@(blue),@(alpha)];

                [cls addObject:clr];

                

            }

        }

        CGContextRelease(context);

        

        

        //第三步 找到出现次数最多的那个颜色

        NSEnumerator *enumerator = [cls objectEnumerator];

        NSArray *curColor = nil;

        

        NSArray *MaxColor=nil;

        NSUInteger MaxCount=0;

        

        while ( (curColor = [enumerator nextObject]) != nil )

        {

            NSUInteger tmpCount = [cls countForObject:curColor];

            

            if ( tmpCount < MaxCount ) continue;

            

            MaxCount=tmpCount;

            MaxColor=curColor;

            

        }

        

        return [UIColor colorWithRed:([MaxColor[0] intValue]/255.0f) green:([MaxColor[1] intValue]/255.0f) blue:([MaxColor[2] intValue]/255.0f) alpha:([MaxColor[3] intValue]/255.0f)];

    }

     

     

     

    [代码分享]UIImage:获取图片主色调

    http://www.cocoachina.com/bbs/read.php?tid=181490
    http://www.wahenzan.com/a/mdev/ios/2015/0325/1677.html

  • 相关阅读:
    最有影响力的计算机视觉会议及期刊论文
    计算机视觉与图像处理方面的顶级期刊
    总结一下国内搞机器学习和数据挖掘的大牛
    戴尔▪卡耐基《人性的弱点》阅读笔记(1)
    Python GUI之tkinter窗口视窗教程大集合(看这篇就够了)
    自控力极差的人如何自救?
    非技术人员也能看懂云计算,大数据,人工智能
    保罗·多兰《设计幸福》阅读笔记
    神经网络浅讲:从神经元到深度学习----以简单循序的方式带你聊聊深度学习
    从机器学习谈起----极好的一篇机器学习全貌入门文章
  • 原文地址:https://www.cnblogs.com/Camier-myNiuer/p/5329796.html
Copyright © 2011-2022 走看看