-
Intégrez la capture de photos haute résolution
Capturez des photos en super haute résolution dans votre app à l'aide d'AVFoundation. Apprenez quand utiliser chacune des trois options de capture d'images : RAW, exposition par paliers et entièrement traitées. Suivez pas à pas comment configurer la capture de photos de 24 Mpx et 48 Mpx sur l'appareil photo principal, téléobjectif ou ultra grand angle. Et découvrez comment le traitement différé des photos permet à votre app de rester réactive à mesure que de nouvelles photos sont prises.
Chapitres
- 0:00 - Introduction
- 0:52 - Photos haute résolution
- 4:07 - Types de captures
- 5:20 - Configurer une session de capture
- 9:41 - Bonnes pratiques pour une capture réactive
Ressources
Vidéos connexes
WWDC26
- Créez une app d’appareil photo réactive qui se lance rapidement
- Prenez en charge la fonctionnalité Center Stage de la caméra avant dans votre app iOS
WWDC23
WWDC21
-
Rechercher dans cette vidéo…
-
-
5:26 - Configure the AVCaptureSession
import AVFoundation private let session = AVCaptureSession() private func configureSession() { session.beginConfiguration() session.sessionPreset = .photo } -
6:11 - Configure AVCapturePhotoOutput
import AVFoundation private let photoOutput = AVCapturePhotoOutput() private let configurePhotoOutput: () -> Void = { photoOutput.maxPhotoQualityPrioritization = .quality // or .balanced } -
6:38 - Add maxPhotoDimensions to AVCapturePhotoOutput
import AVFoundation let supportedMaxPhotoDimensions = device?.activeFormat.supportedMaxPhotoDimensions ?? [] if let largestDimension = supportedMaxPhotoDimensions.max(by: { lhs, rhs in Int(lhs.width) * Int(lhs.height) < Int(rhs.width) * Int(rhs.height) } ) { photoOutput?.maxPhotoDimensions = largestDimension } session?.commitConfiguration() session?.startRunning() -
7:21 - Update AVCapturePhotoSettings
import AVFoundation let settings = AVCapturePhotoSettings() settings.maxPhotoDimensions = dimension.cmVideoDimensionsValue settings.photoQualityPrioritization = .quality var delegate: AVCapturePhotoCaptureDelegate? // Configure photo request delegate if let delegate { photoOutput?.capturePhoto(with: settings, delegate: delegate) } -
8:59 - Prepare resources for the capture
import AVFoundation let prepareSettings = AVCapturePhotoSettings() prepareSettings.maxPhotoDimensions = photoOutput.maxPhotoDimensions prepareSettings.photoQualityPrioritization = .quality photoOutput.setPreparedPhotoSettingsArray([prepareSettings]) { prepared, error in if let error = error { print("Failed to prepare: \(error)") return } print("Pipeline prepared: \(prepared)") } // Later, when ready to capture — create NEW settings let captureSettings = AVCapturePhotoSettings() captureSettings.maxPhotoDimensions = photoOutput.maxPhotoDimensions captureSettings.photoQualityPrioritization = quality photoOutput.capturePhoto(with: captureSettings, delegate: self)
-