apple/Docs, iOS, Swift

[iOS] UIImage.Orientation

lgvv 2022. 12. 9. 20:59

UIImage.Orientation 

 

카메라의 어떤 방향으로 찍어도 나는 사용자가 봤을 때 위 방향으로 나타나기를 바랬다.

그러니까 똑바로 들고 찍어도, 오른손으로 눕혀 찍어도, 거꾸로 찍어도, 왼손으로 눕혀 찍어도 모두 동일하게 나타나기를 바랬다.

 

 

카메라의 경우에는

 

스마트폰의 앞 부분으로 촬영하면 front

스마트폰의 뒷 부부분으로 촬영하면 back 

 

옵션이 존재한다.

 

// 전면 카메라
let front = AVCaptureDevice.default(.builtInDualCamera,
                                    for: .video,
                                    position: .back)

// 후면 카메라 - 후면의 경우 아이폰에 카메라가 여러개가 되면서 옵션이 다양해짐.
let back = AVCaptureDevice.default(.builtInWideAngleCamera,
                                   for: .video,
                                   position: .back)

 

 

 

 

사용자가 어떻게 들고 찍던간에 Orientation을 조정해주면 되는데, 아래 코드를 참고하면 된다.

extension UIImage.Orientation {
    static var frontOrientations: [UIImage.Orientation] = [
        .leftMirrored, // 위로 찍을 때
        .downMirrored, // 오른손으로 눕혀서 찍을 때
        .rightMirrored, // 뒤집어서 찍을 때
        .upMirrored // 왼손으로 눕혀서 찍을 때
    ]
    
    static var backOrientations: [UIImage.Orientation] = [
        .right, // 위로 찍을 때
        .up, // 오른손으로 눕혀서 찍을 때
        .left, // 뒤집어서 찍을 때
        .down // 왼손으로 눕혀서 찍을 때
    ]
}

 

아래는 이미지의 orientation을 변경하는 코드이다.

이미지의 orientation은 { get }으로 바로 변경할 수가 없어서, 이렇게 새로 만들어 주어야 한다.

let newImage = UIImage(cgImage: image.cgImage!,
                                   scale: image.scale,
                                   orientation: { 해당 옵션에 맞게끔 처리} )

 

 

 

이미지 Orientation을 위해 학습한 자료.