[代码分享]UIImage:获取图片主色调
来源:互联网 发布:无主之地ol激活码淘宝 编辑:程序博客网 时间:2024/05/18 19:42
-(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)];
}
0 0
- [代码分享]UIImage:获取图片主色调
- iOS代码获取图片主色调
- 获取图片主色调
- KMean clustering算法获取图片主色调
- KMean clustering算法获取图片主色调
- 获取图片的主色调-java
- php使用Imagick获取图片主色调
- PHP 获取图片的主色调
- Android使用Palette获取图片主色调
- ios获得UIImage的主色调方法
- iOS开发之获取图片的主色调
- iOS 获取图片的主体颜色(主色调)
- Android 使用Palette获取Gallery图片主色调
- 【PHP】识别图片主色调
- 返回一张图片的主色调
- UIimage转NSData + UIimage通过URL获取图片
- UIImage如何从网络上获取图片
- ios 获取UIImage图片的像素尺寸
- 1.[Gradle中文教程系列]跟我学Gradle-Gradle的概述、简介和优势
- 问题 A: 省赛专用题(1)
- JavaScript 进阶教程目录
- IplImage 4通道转3通道
- HDU-1716()(全排列+重集排列)
- [代码分享]UIImage:获取图片主色调
- C语言构建WEB管理系统(四):CGI程序解析POST数据
- 冒泡排序和快速排序java实现
- ORACLE调整归档日志大小
- 157.View the Exhibit and examine the structure of the ORDERS and CUSTOMERS tables.
- CentOS下安装中文输入法、gcc、g++、gdb
- Java-异常
- 使用eclipse直接生成so文件
- Android 手机自动化测试工具