iosobjective-cjailbreaktheos

Get color from pixel in Objective-C


I want to get the color from a coordination on my screen and place it in a variable. I'm using Theos and I'm just messing around on my iOS 5 device for learning so please don't start the "stop wasting your time making tweaks for old iOS" as I've seen on all my posts :|


Solution

  • Try the below code:

    // UIView+ColorOfPoint.h
    @interface UIView (ColorOfPoint)
    - (UIColor *) colorOfPoint:(CGPoint)point;
    @end
    
    // UIView+ColorOfPoint.m
    #import "UIView+ColorOfPoint.h"
    #import <QuartzCore/QuartzCore.h>
    
    @implementation UIView (ColorOfPoint)
    
    - (UIColor *) colorOfPoint:(CGPoint)point
    {
        unsigned char pixel[4] = {0};
    
        CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
    
        CGContextRef context = CGBitmapContextCreate(pixel, 1, 1, 8, 4, colorSpace, kCGBitmapAlphaInfoMask & kCGImageAlphaPremultipliedLast);
    
        CGContextTranslateCTM(context, -point.x, -point.y);
    
        [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;
    }
    

    You can find the files here: https://github.com/ivanzoid/ikit/tree/master/UIView%2BColorOfPoint

    Also, check the answers here for more info: How to get the color of a pixel in an UIView?