From 433b0b0b9f2b3f3959edcfd14c07a9cfba42a611 Mon Sep 17 00:00:00 2001 From: John Estropia Date: Thu, 23 Mar 2023 20:13:50 +0900 Subject: [PATCH] apply correct aspectRatio when faceDetection fails to find face (#196) --- .../Core/EditingStack.CropModifier.swift | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/Sources/BrightroomEngine/Core/EditingStack.CropModifier.swift b/Sources/BrightroomEngine/Core/EditingStack.CropModifier.swift index af2f8f29..b4be945f 100644 --- a/Sources/BrightroomEngine/Core/EditingStack.CropModifier.swift +++ b/Sources/BrightroomEngine/Core/EditingStack.CropModifier.swift @@ -40,22 +40,31 @@ extension EditingStack { public static func faceDetection(paddingBias: CGFloat = 1.3, aspectRatio: PixelAspectRatio? = nil) -> Self { return .init { image, crop, completion in + + var fallbackCrop: EditingCrop { + guard let aspectRatio = aspectRatio else { + return crop + } + var new = crop + new.updateCropExtentIfNeeded(toFitAspectRatio: aspectRatio) + return new + } let request = VNDetectFaceRectanglesRequest { request, error in if let error = error { EngineLog.debug(error) - completion(crop) + completion(fallbackCrop) return } guard let results = request.results as? [VNFaceObservation] else { - completion(crop) + completion(fallbackCrop) return } guard let first = results.first else { - completion(crop) + completion(fallbackCrop) return }