AVCaptureOutput делает темное изображение даже при включенной вспышке - PullRequest
9 голосов
/ 11 июня 2011

Я придумала реализацию AVFoundation и ImageIO, чтобы позаботиться о фотографировании в моем приложении.У меня есть проблема с этим, однако.Изображения, которые я делаю, всегда темные, даже если вспышка гаснет.Вот код, который я использую:

        [[self currentCaptureOutput] captureStillImageAsynchronouslyFromConnection:[[self currentCaptureOutput].connections lastObject]
                                        completionHandler:^(CMSampleBufferRef imageDataSampleBuffer, NSError *error) {

                                            [[[blockSelf currentPreviewLayer] session] stopRunning];
                                            if (!error) {
                                                NSData *data            = [AVCaptureStillImageOutput jpegStillImageNSDataRepresentation:imageDataSampleBuffer];
                                                CGImageSourceRef source = CGImageSourceCreateWithData((CFDataRef) data, NULL);

                                                if (source) {

                                                    UIImage *image = [blockSelf imageWithSource:source];
                                                    [blockSelf updateWithCapturedImage:image];
                                                    CFRelease(source);

                                                }

                                            }

                                        }];

Есть ли там что-нибудь, что могло бы привести к тому, что на снимке не была установлена ​​вспышка?

1 Ответ

14 голосов
/ 02 июня 2012

Я обнаружил, что иногда получаю темные изображения, если AVCaptureSession был установлен непосредственно перед этим вызовом. Возможно, для автоматической настройки экспозиции и баланса белого потребуется некоторое время.

Решение состояло в том, чтобы настроить AVCaptureSession, затем подождать, пока свойства adjustingExposure и adjustingWhiteBalance AVCaptureDevice оба станут NO (соблюдайте их с KVO), прежде чем вызывать -[AVCaptureStillImageOutput captureStillImageAsynchronouslyFromConnection: completionHandler:].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...