我有以下问题:如何扫描完整的图像以获得每个像素的颜色。
我使用此库https://github.com/unixpickle/ANImageBitmapRep。
我有这段代码:
- (void)executeImageScanProcessWithImage:(UIImage *)image{
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,
(unsigned long)NULL), ^(void) {
NSString *rowString = @"";
NSMutableArray *array = [[NSMutableArray alloc] init];
ANImageBitmapRep *imageBitmap;
UIColor *color;
// Loop für die Spalten (y)
for (int y = 0; y < 320; y += 20) {
rowString = @""; // rowString zurücksetzen
// Loop für die Reihe (x)
for (int x = 0; x < image.size.width; x += 20) {
BMPoint pixelPoint = BMPointMake(x, y);
imageBitmap = [ANImageBitmapRep imageBitmapRepWithImage:image];
BMPixel pixel = [imageBitmap getPixelAtPoint:pixelPoint];
color = UIColorFromBMPixel(pixel);
if ([color isEqual:[UIColor redColor]]) {
rowString = [rowString stringByAppendingFormat:@"0"];
}
else {
rowString = [rowString stringByAppendingFormat:@"1"];
}
// Wenn der letzte "Run" vollzogen ist, wird die rowString in den Array hinzugefügt
if ([rowString length] == image.size.width / 20) {
[array addObject:rowString];
}
}
[array addObject:rowString];
}
NSLog(@"content of array = %@",array);
});
}
问题是,当图像太大时,我会收到此错误。
Malloc失败了,这太糟糕了。我希望能用这个记忆。七月 24 18:31:41 Christians-MacBook-Pro.local Bitmap_Test [2374]: CGBitmapContextGetData:无效的上下文0x0 Jul 24 18:31:41 Christians-MacBook-Pro.local Bitmap_Test [2374]: CGBitmapContextCreateImage:无效的上下文0x0 Jul 24 18:31:41 Christians-MacBook-Pro.local Bitmap_Test [2374]: CGBitmapContextGetWidth:无效的上下文0x0 Bitmap_Test(2374,0xb0103000)malloc: * mmap(size = 2265088)失败 (错误代码= 12)
你知道另一种处理这个计划的方法吗?
来自德国的问候, 克里斯
答案 0 :(得分:0)
我找到了另一个线程的代码,我用我的代码替换了它。
以下是主题: How to get pixel data from a UIImage (Cocoa Touch) or CGImage (Core Graphics)?