2010-12-28 1 views
1

J'utilise AVFoundation pour prendre une photo automatiquement, mais les images sont très sombres. La caméra arrière fonctionne bien si vous utilisez le flash sur un iPhone 4, mais la caméra frontale est essentiellement un carré noir avec seulement le contour des objets dans l'image.AVFoundation Images arrivées inutilement sombres

Je donne les résultats suivants pour les deux caméras mis, mais il ne semble pas faire une différence:

if (device.hasFlash) { 
     NSLog(@"device.hasFlash turning flash mode on"); 
     [device lockForConfiguration:&deviceError]; 
     device.flashMode = AVCaptureFlashModeOn; 
     [device unlockForConfiguration]; 
    } 
    else { 
     NSLog(@"Device does not have Flash"); 
    } 

    if ([device isFocusModeSupported:AVCaptureFocusModeContinuousAutoFocus]) { 
     NSLog(@"Enabling ContinuousAutoFocus"); 
     [device lockForConfiguration:&deviceError]; 
     device.focusMode = AVCaptureFocusModeContinuousAutoFocus; 
     [device unlockForConfiguration]; 
    } 
    else { 
     NSLog(@"Device does not support ContinuousAutoFocus"); 
    } 

    if ([device isExposureModeSupported:AVCaptureExposureModeContinuousAutoExposure]) { 
     NSLog(@"Enabling ContinuousAutoExposure"); 
     [device lockForConfiguration:&deviceError]; 
     device.exposureMode = AVCaptureExposureModeContinuousAutoExposure; 
     [device unlockForConfiguration]; 
    } 
    else { 
     NSLog(@"Device does not support ContinuousAutoExposure"); 
    } 

    if ([device isWhiteBalanceModeSupported:AVCaptureWhiteBalanceModeContinuousAutoWhiteBalance]) { 
     NSLog(@"Enabling ContinuousAutoWhiteBalance"); 
     [device lockForConfiguration:&deviceError]; 
     device.whiteBalanceMode = AVCaptureWhiteBalanceModeContinuousAutoWhiteBalance; 
     [device unlockForConfiguration]; 
    } 
    else { 
     NSLog(@"Device does not support ContinuousAutoWhiteBalance"); 
    } 

Des idées?

Répondre

1

La caméra avant prend un certain temps pour ajuster sa balance des blancs. Vous devrez peut-être utiliser la propriété de périphérique isAdjustingWhiteBalance de KVO et ne déclencher la capture qu'après que la propriété est passée de NO à YES et de nouveau à NO pour la première fois.

+0

Merci, cela semble être la bonne direction. – redbeard

+0

@postmechanical Pourriez-vous nous montrer un exemple de la façon dont vous avez résolu cela? Parce que je suis confronté exactement au même problème sur mon iPhone 6 en ce moment et je ne sais pas comment le résoudre. – Sebastien

0

J'ai également eu ce problème, car j'ai créé AVCaptureStillImageOutput avant chaque capture. Mais un certain temps est nécessaire pour la configuration automatique.

Donc, pour le fixer je crée AVCaptureStillImageOutput une fois avec la création AVCaptureSession