captureStillImageAsynchronouslyFromConnection
루프를 사용하여 연속 (멀티 샷) 고해상도 이미지를 캡처하려고하지만 가끔 일시 중지하여 다시 초점을 맞 춥니 다. 다른 stackoverflow 게시에 설명 된대로 초점 모드를 잠 갔지만 카메라가 가끔 초점을 다시 잡는 것을 막지는 못했습니다. 내 코드는 다음과 같습니다captureStillImageAsynchronouslyFromConnection (iOS AVFoundation)을 사용하여 멀티 샷을 구현하는 방법
// [self.session beginConfiguration];
if ([device lockForConfiguration:nil] == YES) {
if ([device isFocusModeSupported:AVCaptureFocusModeLocked]) {
[device setFocusMode:AVCaptureFocusModeLocked];
NSLog(@"focus locked");
}
if ([device isExposureModeSupported:AVCaptureExposureModeLocked]) {
[device setExposureMode:AVCaptureExposureModeLocked];
NSLog(@"exposure locked");
}
if ([device isWhiteBalanceModeSupported:AVCaptureWhiteBalanceModeLocked]) {
[device setWhiteBalanceMode:AVCaptureWhiteBalanceModeLocked];
NSLog(@"white balance locked");
}
}
// [self.session commitConfiguration];
for (int n = 0; n < 5; n++) {
[self.stillImageOutput captureStillImageAsynchronouslyFromConnection:[self.stillImageOutput connectionWithMediaType:AVMediaTypeVideo] completionHandler:^(CMSampleBufferRef imageDataSampleBuffer, NSError *error) {
if (imageDataSampleBuffer) {
NSData *imageData = [AVCaptureStillImageOutput jpegStillImageNSDataRepresentation:imageDataSampleBuffer];
UIImage *image = [[UIImage alloc] initWithData:imageData];
[[[ALAssetsLibrary alloc] init] writeImageToSavedPhotosAlbum:[image CGImage] orientation:(ALAssetOrientation)image.imageOrientation completionBlock:nil];
}
}];
}
[device unlockForConfiguration]
출력 로그 보고서 :
알이 성공적으로 고정되어 있어야 그 초점 등을 나타냅니다focus locked
exposure locked
white balance locked
.
[device unlockForConfiguration]
과 [device unlockForConfiguration]
으로 잠금 코드를 래핑하려고했으나 문제가 해결되지 않았습니다.
코드에서 오류가 있거나 누락 된 부분을 식별 할 수 있습니까? (나는 대신 캡쳐 대신 비디오 캡처를 사용하여 이것을 구현할 수 있음을 알고 있지만, AVCaptureSessionPresetPhoto
해상도 이미지가 필요합니다.) 모든 도움이 크게 감사 할 것입니다. 고맙습니다.