-
Implemente a captura de fotos em alta resolução
Capture fotos em altíssima resolução no seu app usando o framework AVFoundation. Saiba quando usar cada uma das três opções diferentes para tirar fotos: RAW, bracketing de exposição e processamento completo. Aprenda em detalhes a configurar a captura de fotos para imagens de 24 MP e 48 MP nas câmeras Principal, Teleobjetiva e Ultra-angular. Descubra também como o processamento de fotos adiado mantém a responsividade do seu app à medida que mais fotos são tiradas.
Capítulos
- 0:00 - Introdução
- 0:52 - Fotos em Alta Resolução
- 4:07 - Tipos de Capturas
- 5:20 - Configure uma sessão de captura
- 9:41 - Melhores Práticas para Capturas Responsivas
Recursos
Vídeos relacionados
WWDC26
- Crie um app de câmera responsivo de rápida inicialização
- Torne seu app para iOS compatível com a câmera frontal Center Stage
WWDC23
WWDC21
-
Buscar neste vídeo...
-
-
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)
-