Skip to content

Instantly share code, notes, and snippets.

@richy486
Created July 3, 2015 15:06
Show Gist options
  • Save richy486/106c1d3c42faa242a6b6 to your computer and use it in GitHub Desktop.
Save richy486/106c1d3c42faa242a6b6 to your computer and use it in GitHub Desktop.
//
// UIImage+AverageColor.h
//
//
// Created by Richard Adem on 3/07/2015.
// Copyright (c) 2015 Richard Adem. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface UIImage (AverageColor)
- (UIColor*) averageColor;
- (CGFloat) luminance;
@end
//
// UIImage+AverageColor.m
//
//
// Created by Richard Adem on 3/07/2015.
// Copyright (c) 2015 Richard Adem. All rights reserved.
//
#import "UIImage+Color.h"
@implementation UIImage (AverageColor)
- (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), self.CGImage);
CGColorSpaceRelease(colorSpace);
CGContextRelease(context);
if(rgba[3] > 0) {
CGFloat alpha = ((CGFloat)rgba[3])/255.0;
CGFloat multiplier = alpha/255.0;
return [UIColor colorWithRed:((CGFloat)rgba[0])*multiplier
green:((CGFloat)rgba[1])*multiplier
blue:((CGFloat)rgba[2])*multiplier
alpha:alpha];
}
else {
return [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];
}
}
- (CGFloat) luminance {
UIColor *averageColor = [self averageColor];
CGFloat red, green, blue, alpha = 0;
[averageColor getRed:&red green:&green blue:&blue alpha:&alpha];
CGFloat luminance = red*0.299 + green*0.587 + blue*0.114;
return luminance;
}
@end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment