我在使用CGBitmapContextCreateImage时遇到了问题,这是在我的iPhone应用程序中。
我正在使用AV Foundation框架来使用此方法抓取相机帧:
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection {
CVImageBufferRef imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer);
CVPixelBufferLockBaseAddress(imageBuffer,0);
uint8_t *baseAddress = (uint8_t *)CVPixelBufferGetBaseAddress(imageBuffer);
size_t bytesPerRow = CVPixelBufferGetBytesPerRow(imageBuffer);
size_t width = CVPixelBufferGetWidth(imageBuffer);
size_t height = CVPixelBufferGetHeight(imageBuffer);
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef newContext = CGBitmapContextCreate(baseAddress, width, height, 8, bytesPerRow, colorSpace, kCGBitmapByteOrder32Little | kCGImageAlphaPremultipliedFirst);
CGImageRef newImage = CGBitmapContextCreateImage(newContext);
CVPixelBufferUnlockBaseAddress(imageBuffer,0);
CGContextRelease(newContext);
CGColorSpaceRelease(colorSpace);
UIImage *image= [UIImage imageWithCGImage:newImage scale:1.0 orientation:UIImageOrientationRight];
self.imageView.image = image;
CGImageRelease(newImage);
}
然而,我在调试控制台中看到了一个错误,因为它正在运行:
<Error>: CGDataProviderCreateWithCopyOfData: vm_copy failed: status 2.
有人见过这个问题吗?通过注释掉一些行,我已经缩小了问题所在的范围:
CGImageRef newImage = CGBitmapContextCreateImage(newContext);
但我不确定如何摆脱它。从功能上讲,它运行得很好。因此,CGImage正在被创建,但我需要知道是什么导致错误,以便它不会影响其他部分。
非常感谢。任何帮助/建议都将是极好的! Brett