2013-08-27 96 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個條目,因此也請檢查。