How to calculate the average color of a UIImage?

前端 未结 6 1742
花落未央
花落未央 2021-02-01 07:55

I want to build an app that lets the user select an image and it outputs the \"average color\".

For example, this image:

The average color would be a gr

6条回答
  •  谎友^
    谎友^ (楼主)
    2021-02-01 08:24

    Maybe it can help for someone - my extension return color but for UIView (where your image can be found), uses old QuartzCore code

    // ObjC case
    @interface UIView (ColorOfPoint)
        - (UIColor *) colorOfPoint:(CGPoint)point withSize:(CGSize)size;
    @end
    
    #import 
    
    @implementation UIView (ColorOfPoint)
    
    - (UIColor *) colorOfPoint:(CGPoint)point withSize:(CGSize)size {
        unsigned char pixel[4] = {0};
    
        CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
    
        CGContextRef context = CGBitmapContextCreate(pixel, size.width, size.height, 8, 4, colorSpace, kCGBitmapAlphaInfoMask & kCGImageAlphaPremultipliedLast);
    
        CGContextTranslateCTM(context, -point.x-size.width/2, -point.y-size.height/2);
    
        [self.layer renderInContext:context];
    
        CGContextRelease(context);
        CGColorSpaceRelease(colorSpace);
    
        //NSLog(@"pixel: %d %d %d %d", pixel[0], pixel[1], pixel[2], pixel[3]);
    
        UIColor *color = [UIColor colorWithRed:pixel[0]/255.0 green:pixel[1]/255.0 blue:pixel[2]/255.0 alpha:pixel[3]/255.0];
    
        return color;
    }
    
    @end
    

提交回复
热议问题