#ios #ios4 #avfoundation
#iOS #ios4 #avfoundation
Вопрос:
Я разработал реализацию 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:
Я обнаружил, что иногда получаю темные изображения, если AVCaptureSession был настроен непосредственно перед этим вызовом. Возможно, для настройки автоматической экспозиции и баланса белого требуется некоторое время.
Решение состояло в том, чтобы настроить AVCaptureSession, затем дождаться, пока adjustingExposure
и adjustingWhiteBalance
свойства AVCaptureDevice будут одинаковыми NO
(обратите внимание на это с помощью KVO) перед вызовом -[AVCaptureStillImageOutput captureStillImageAsynchronouslyFromConnection: completionHandler:]
.
Комментарии:
1. Как вы это делаете? Если я выполняю как настройку экспозиции, так и настройку баланса белого — когда именно я должен вызывать captureStillImageAsynchronouslyFromConnection? Прямо из observeValueForKeyPath?
2. Вы нашли, как это сделать? Потому что у меня сейчас точно такая же проблема на моем iPhone 6.