-2

私のアプリでは、画像の最初の 3 つの平均色 (主に使用される色) を表示する必要があります。どうすればこれを入手できますか? 以下のコードを試して 1 つの平均色を取得しましたが、現在のレベルに基づいて 3 つの色が必要です。元。出力例:
ブルー #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];
}

}

ここに画像の説明を入力

4

1 に答える 1

1

NSMutableDictionary *dicColors;

dicColors のエントリの場合は各ピクセルをループし、値をインクリメントします。それ以外の場合は、初期値 1 でこの色の dicColors に新しいエントリを追加します。

NSArray に変換して並べ替える

配列の最初の 3 つの要素を取得します。画像が空白または無地の場合、この配列には 1 つまたは 2 つのエントリしかない可能性があるため、それも確認してください。

于 2013-08-27T09:36:32.210 に答える