最近写一个应用,需要对图像中某一个像素点的颜色进行取样,并检测是否与特定颜色一致或相近,解决的办法如下:
一、像素点颜色取样(代码参考国外一篇文章,在最后列出)
+ (UIColor*) getPixelColorAtLocation:(CGPoint)point inImage:(UIImage *)image {
UIColor* color = nil;
CGImageRef inImage = image.CGImage;
CGContextRef cgctx = [DetectColour createARGBBitmapContextFromImage:
inImage];
if (cgctx == NULL) { return nil; /* error */ }
size_t w = CGImageGetWidth(inImage);
size_t h = CGImageGetHeight(inImage);
CGRect rect = {
{0,0},{w,h}};
CGContextDrawImage(cgctx, rect, inImage);
unsigned char* data = CGBitmapContextGetData (cgctx);
if (data != NULL) {
int offset = 4*((w*round(point.y))+round(point.x));
int alpha = data[offset];
int red = data[offset+1];
int green = data[offset+2];
int blue = data[offs