2013-08-27 67 views
-2

在我的应用程序中,我需要显示图像的前三种平均颜色(主要用于颜色)。我怎么能得到这个?我试过下面的代码来得到一个平均颜色,但我需要基于它的礼物水平的三种颜色。 ex。输出样本:
蓝#0000FF 水族#00FFFF 灰色#808080如何获得图像的前三个平均颜色?

- (的UIColor *)averageColor {

CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); 
unsigned char rgba[4]; 
CGContextRef context = CGBitmapContextCreate(rgba, 1, 1, 8, 4, colorSpace, kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big); 

CGContextDrawImage(context, CGRectMake(0, 0, 1, 1), given_Img.CGImage); 
CGColorSpaceRelease(colorSpace); 
CGContextRelease(context); 
UIColor *colorOfArtwork; 



if(rgba[3]) { 
    NSLog(@"rgba[3]"); 
    CGFloat alpha = ((CGFloat)rgba[3])/255.0; 
    CGFloat multiplier = alpha/255.0; 

    return colorOfArtwork = [UIColor colorWithRed:((CGFloat)rgba[0])*multiplier 
            green:((CGFloat)rgba[1])*multiplier 
             blue:((CGFloat)rgba[2])*multiplier 
            alpha:alpha]; 
} 
else { 
    return colorOfArtwork = [UIColor colorWithRed:((CGFloat)rgba[0])/255.0 
             green:((CGFloat)rgba[1])/255.0 
             blue:((CGFloat)rgba[2])/255.0 
             alpha:((CGFloat)rgba[3])/255.0]; 
} 

}

enter image description here

+0

像紫色,黄色等等。 – Megan

+0

把一些代码,如果你已经尝试了一些东西.. – parilogic

+0

你是什么意思的“根据其优先权”? –

回答

1

的NSMutableDictionary * dicColors;

遍历每个像素,如果在dicColors条目,然后增加其他明智的添加在dicColors新条目这个色彩搭配,以NSArray的1

转换的初始值和排序

得到第一个值数组的3个元素。如果您的图像是空白或纯色,则此阵列可能只有1或2个条目,因此也请检查。