2013-04-26 3 views
1

После некоторых прогонов следующего блока кода я получаю недопустимый контекст 0x0 для CGContextDrawImage. Этот код находится в пользовательском методе в UIViewController. Я по существу захватываю изображение от взятия неподвижного изображения с помощью AVFoundation и беру это изображение для считывания значения пиксельных шестнадцатеричных данных. Ниже приведен код, который я написал:Недопустимый контекст 0x0 CGContextDrawImage

AVCaptureConnection *videoConnection = nil; 
for (AVCaptureConnection *connection in stillImageOutput.connections) 
{ 
    for (AVCaptureInputPort *port in [connection inputPorts]) 
    { 
     if ([[port mediaType] isEqual:AVMediaTypeVideo]) 
     { 
      videoConnection = connection; 
      break; 
     } 
    } 
    if (videoConnection) { break; } 
} 
[stillImageOutput captureStillImageAsynchronouslyFromConnection:videoConnection completionHandler: ^(CMSampleBufferRef imageSampleBuffer, NSError *error) 
{ 
    CFDictionaryRef exifAttachments = CMGetAttachment(imageSampleBuffer, kCGImagePropertyExifDictionary, NULL); 
    NSData *imageData = [AVCaptureStillImageOutput jpegStillImageNSDataRepresentation:imageSampleBuffer]; 
    image2 = [[UIImage alloc] initWithData:imageData]; 
}]; 

CGImageRef imageRef = [image CGImage]; 
CGContextRef context = CGBitmapContextCreate(rawData, width, height,bitsPerComponent,bytesPerRow, colorSpace,kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big); 
CGColorSpaceRelease(colorSpace); 
CGContextDrawImage(context, CGRectMake(0, 0, width, height), imageRef); 

Почему я получаю недопустимый контекст 0x0 для CGContextDrawImage?

ответ

2

CGBitmapContextCreate возвращает NULL, если не удается создать запрошенный контекст. CGContextDrawImage жалуется, что context был NULL.

+0

Как я могу сделать это не NULL? Как есть способ заставить CGBitmapContextCreate всегда возвращать допустимый контекст? – David

+0

Один или несколько параметров, которые передаются, не должны быть правильными. В документации на самом деле не говорится, что искать, если он возвращает «NULL», просто чтобы он не смог создать контекст. Я бы сказал, установить точку останова на этой строке и посмотреть, что параметры соответствуют сравнению с тем, что вы ожидаете. –

+0

Похоже, что изображение2 недопустимо. Почему это вызывает проблему? – David

Смежные вопросы