如何获取自定义uiimage的每个像素的坐标?

时间:2013-05-10 08:49:31

标签: ios uicolor shapes

大家好

我需要编写简单的益智游戏,主要条件是,当这块拼图在“释放”时接近目的地时,它就会到达应有的位置。

所以我试图得到图像的每个像素的坐标数组,为此我想比较像素颜色和背景颜色,如果它们不相等,那就是图像像素的坐标。但是......我不知道怎么做。

我试过了:

- (BOOL)isImagePixel:(UIImage *)image withX:(int)x andY:(int) y {

    CFDataRef pixelData = CGDataProviderCopyData(CGImageGetDataProvider(image.CGImage));
    const UInt8* data = CFDataGetBytePtr(pixelData);

    int pixelInfo = ((image.size.width  * y) + x ) * 4; // The image is png

    UInt8 red = data[pixelInfo];         
    UInt8 green = data[(pixelInfo + 1)]; 
    UInt8 blue = data[pixelInfo + 2];    
    UInt8 alpha = data[pixelInfo + 3];   
    CFRelease(pixelData);

    UIColor* color = [UIColor colorWithRed:red/255.0f green:green/255.0f blue:blue/255.0f alpha:alpha/255.0f]; 

        NSLog(@"color is %@",[UIColor whiteColor]);
    if ([color isEqual:self.view.backgroundColor]){
        NSLog(@"x = %d, y = %d",x,y);
        return YES;
    }
    else return NO;

}

这里有什么问题?
或者也许有人可以建议我另一个解决方案?

谢谢。

1 个答案:

答案 0 :(得分:0)

这似乎是一个非常麻烦的解决方案。我的建议是,对于每件作品,你都会在拼图中保持一个表示它是左上角坐标的表,当用户抬起手指时,你计算从当前位置到指定位置的绝对距离。