-
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 - High-resolution photos
- 4:07 - Types of captures
- 5:20 - Configure a capture session
- 9:41 - Responsive capture best practices
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)
-
-
- 0:00 - Introduction
The tradeoffs high-resolution photo capture requires — particularly between processing time and image quality — and what the session covers: photo types, configuring and capturing them, and keeping your app responsive.
- 0:52 - High-resolution photos
Explore the different photo resolutions available across iPhone cameras, including 12MP, 24MP, and 48MP, and how the photonic engine balances light and detail.
- 4:07 - Types of captures
Learn about the four types of high resolution captures you can request: fully processed photos, exposure brackets, Bayer RAW, and Apple ProRAW.
- 5:20 - Configure a capture session
An overview of AVCaptureSession setup for high resolution photos. Learn how to select quality prioritization, configure maximum photo dimensions, and preallocate resources.
- 9:41 - Responsive capture best practices
Keep your app fast and responsive by implementing overlapping captures, deferred photo processing, and fast capture prioritization to minimize shot-to-shot delay.