//吸取网络图片的主色调
+ (UIColor *)mostColorFrom:(NSString *)url scale:(NSInteger)scale{NSData *data = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:url]];UIImage *image = [[UIImage alloc] initWithData:data];return [self mostColor:image size:CGSizeMake(image.size.width/scale, image.size.height/scale)];
}//根据图片获取图片的主色调
+ (UIColor*)mostColor:(UIImage*)image size:(CGSize)thumbSize{
#if __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_6_1int bitmapInfo = kCGBitmapByteOrderDefault | kCGImageAlphaPremultipliedLast;
#elseint bitmapInfo = kCGImageAlphaPremultipliedLast;
#endif//第一步 先把图片缩小 加快计算速度. 但越小结果误差可能越大(可根据自己的需求)
//    CGSize thumbSize=CGSizeMake(image.size.width/2, image.size.height/2);CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();CGContextRef context = CGBitmapContextCreate(NULL,thumbSize.width,thumbSize.height,8,//bits per componentthumbSize.width*4,colorSpace,bitmapInfo);CGRect drawRect = CGRectMake(0, 0, thumbSize.width, thumbSize.height);CGContextDrawImage(context, drawRect, image.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];if (alpha>0) {//过滤透明if (red==255&&green==255&&blue==255) {//过滤白色}else{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;}UIColor *result = [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)];return result;
}

本文是参考的其它教程,只是根据自己的项目需求进行了修改

iOS 吸取图片主色调相关推荐

  1. iOS UIButton 图片文字上下垂直布局 解决方案

    iOS UIButton 图片文字上下垂直布局 解决方案 参考文章: (1)iOS UIButton 图片文字上下垂直布局 解决方案 (2)https://www.cnblogs.com/yajunL ...

  2. ios 按钮图片充满按钮_iOS有一些非常危险的按钮-UX评论

    ios 按钮图片充满按钮 I recently bought a cool thing off Amazon. It's an adapter for iPhone, making it easy t ...

  3. php 识别图片主色调,PHP 判断图片主色调的简单示例

    这篇文章主要为大家详细介绍了PHP 判断图片主色调的简单示例,具有一定的参考价值,可以用来参考一下. 这段代码可以帮助你判断任意图片的主色调,使用了简单的统计算法实现 ,感兴趣的小伙伴,下面一起跟随5 ...

  4. iOS tabbar 图片,最佳大小方式

    iOS tabbar 图片,最佳大小方式 文档大小 30 *30 retaina 60 *60 最佳大小 48 *32 参考:http://stackoverflow.com/questions/15 ...

  5. IOS gif图片播放 swift

    IOS gif图片播放 swift 1. GIF在iOS平台上的几种加载方式 2. 第三方开源框架播放GIF 1. SDWebImage播放: 2. Kingfisher播放: 3. 自己实现加载GI ...

  6. Js获取图片主色调,近似色,互补色,以及根据图片颜色获取主题配色方案详解、插件。

    Js获取图片主色调,近似色,互补色,以及根据图片颜色获取主题配色方案详解.插件. **应用场景:**在很多时候,前端开发过程中需要动态的获取图片的主要的颜色值,并根据主色调去调整主题样式的颜色或者模拟 ...

  7. veImageX 演进之路:iOS 高性能图片加载 SDK

    动手点关注 干货不迷路 1.  SDK简介 图片在业务应用场景是一个常见的元素,veImageX(简称ImageX)为业务提供了灵活.高效的一站式图片处理解决方案,包括了服务端 SDK.上传 SDK ...

  8. 之于图片主色调提取算法

    图片颜色量化算法, 又称之为图片主色调提取算法. 也可以称之为调色板提取算法. 比较常见的应用就是用于提取图片的主色调用于上色配色, 当然也可以用于图像分割. 算法的主要目的是从真彩色图像所能表现的大 ...

  9. iOS相册图片二维码识别

    前言:最近客户要求开发一个功能,类似微信长按图片识别图片中的二维码,一开始我使用了ZXingObjC,但是完成后被测试出有些二维码识别不了,所以只能另寻它法,之后更换为苹果系统自带的识别图片二维码的功 ...

最新文章

  1. ggsurvplot图片输出
  2. BurpSuite实例教程讲解
  3. git clone 几种可选参数的使用与区别
  4. 转tigase 安装
  5. python continue语句的用法(跳过本次循环,不是跳出整个循环,break才是跳出整个循环)
  6. HUD2795 线段树(单点更新)
  7. 美图手机投射功能在哪_在Java 8中进行投射(还有其他功能?)
  8. 继承(instanceof :比较运算符;不仅运行父类方法,也运行子类独有的方法)
  9. 在 ASP.NET Web 部件应用程序中使用服务器控件
  10. Swift去除两边的特定字符(空格或其它)
  11. 快速清理Exchange 2003中的SMTP队列
  12. Ubuntu开启root账户ssh远程登录
  13. SVN—如何安装SVN客户端软件
  14. 图片轮播插件slideBox.js
  15. java http 传输二进制流_字符流、字节流、二进制及其在HTTP协议传输
  16. 使用费马小定理和欧拉定理计算余数
  17. gitlab-ci配置
  18. java数组首尾互换,c语言程序,将一个数组首尾互换后输出
  19. 莫比乌斯反演专题题解
  20. 【HTTP】协议格式、请求

热门文章

  1. 大数系列——大数加法
  2. CSS实现高亮搜索关键字并前后省略隐藏
  3. 设置Everything不搜索$RECYCLE.BINand
  4. 最新单片机毕设100例(五)
  5. mysql 数据库习题练习 1:免费题目
  6. 哪款蓝牙耳机听歌音质好?蓝牙耳机音质排行榜
  7. 什么蓝牙耳机听歌音质好?盘点音质最好的蓝牙耳机
  8. C语言extern和static
  9. C# do-while循环控制台实现简单的猜数字游戏
  10. 软件设计师——设计模式笔记下