iPhoneアプリでCGBitmapContextCreateImageを使用すると問題が発生します。
私はAVFoundationFrameworkを使用して、この方法を使用してカメラフレームを取得しています。
- (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が作成されていますが、他の部分に影響を与えないように、エラーの原因を知る必要があります。
どうもありがとう。どんな助け/アドバイスも素晴らしいでしょう!ブレット