iOS 获取图片某一点的颜色对象 (UIColor *)

# XPXRefresh

``

@interfaceUIImage (ColorAtPixel)

- (UIColor*)colorAtPixel:(CGPoint)point;

@end

#import

#import"UIImage+ColorAtPixel.h"

@implementationUIImage (ColorAtPixel)

- (UIColor*)colorAtPixel:(CGPoint)point {

// Cancel if point is outside image coordinates

if(!CGRectContainsPoint(CGRectMake(0.0f,0.0f,self.size.width,self.size.height), point)) {

returnnil;

}

NSInteger pointX = trunc(point.x);

NSInteger pointY = trunc(point.y);

CGImageRef cgImage =self.CGImage;

NSUInteger width =self.size.width;

NSUInteger height =self.size.height;

CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();

intbytesPerPixel =4;

intbytesPerRow =bytesPerPixel*1;

NSUInteger bitsPerComponent =8;

unsignedcharpixelData[4] = {0,0,0,0};

CGContextRef context = CGBitmapContextCreate(pixelData,

1,

1,

bitsPerComponent,

bytesPerRow,

colorSpace,

kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big);

CGColorSpaceRelease(colorSpace);

CGContextSetBlendMode(context, kCGBlendModeCopy);

// Draw the pixel we are interested in onto the bitmap context

CGContextTranslateCTM(context, -pointX, pointY-(CGFloat)height);

CGContextDrawImage(context, CGRectMake(0.0f,0.0f, (CGFloat)width, (CGFloat)height), cgImage);

CGContextRelease(context);

// Convert color values [0..255] to floats [0.0..1.0]

CGFloat red= (CGFloat)pixelData[0] /255.0f;

CGFloat green = (CGFloat)pixelData[1] /255.0f;

CGFloat blue= (CGFloat)pixelData[2] /255.0f;

CGFloat alpha = (CGFloat)pixelData[3] /255.0f;

return[UIColorcolorWithRed:redgreen:greenblue:bluealpha:alpha];

}

@end

``

你可能感兴趣的:(iOS 获取图片某一点的颜色对象 (UIColor *))