问题是没有得到像素数据我能够找到那个
的一些来源-(NSArray *)getRGBAtLocationOnImage:(UIImage *)theImage X:(int)x Y:(int)y
{
// First get the image into your data buffer
CGImageRef image = [theImage CGImage];
NSUInteger width = CGImageGetWidth(image);
NSUInteger height = CGImageGetHeight(image);
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
unsigned char *rawData = malloc(height * width * 4);
NSUInteger bytesPerPixel = 4;
NSUInteger bytesPerRow = bytesPerPixel * width;
NSUInteger bitsPerComponent = 8;
CGContextRef context = CGBitmapContextCreate(rawData, width, height, bitsPerComponent, bytesPerRow, colorSpace, kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big);
CGColorSpaceRelease(colorSpace);
CGContextDrawImage(context, CGRectMake(0, 0, width, height),image);
CGContextRelease(context);
// Now your rawData contains the image data in the RGBA8888 pixel format.
int byteIndex = (bytesPerRow * y) + x * bytesPerPixel;
int red = rawData[byteIndex];
int green = rawData[byteIndex + 1];
int blue = rawData[byteIndex + 2];
//int alpha = rawData[byteIndex + 3];
NSLog(@"Red: %d Green: %d Blue: %d",red,green,blue);
NSArray *i = [[NSArray alloc] initWithObjects:[NSNumber numberWithInt:red], [NSNumber numberWithInt:green], [NSNumber numberWithInt:blue], nil];
free(rawData);
return i;
}
问题是我想要得到的像素的位置。我不知道如何找出我想要的像素所在的位置。什么是解决这个问题的方法。
答案 0 :(得分:0)
不确定未解决您的问题,但是......
看看你的方法:
-(NSArray *)getRGBAtLocationOnImage:(UIImage *)theImage X:(int)x Y:(int)y {
// Your method
}
它等待x和y并返回i,这是一个包含你传递的点(x,y)的RGB数据的数组。
假设要有100x100像素的图像,如果要检查图像中的所有像素,则必须调用方法10000次(每像素一个)。
在这种情况下,您可以尝试这样的事情:
NSMutableArray *RGBImage = [[NSMutableArray alloc] initWithObjects:nil];
for (int k = 0; k < IMAGE_WIDTH; k++) {
for (j = 0; j < IMAGE_HEIGHT; j++) {
NSArray *RGBPixel = [self getRGBAtLocationOnImage:theImage X:k Y:j]
[RGBImage addObject:RGBPixel];
}
}