Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 애니메이션
- UICollectionView
- collectionview
- uiscrollview
- Clean Code
- 클린 코드
- 리펙토링
- ios
- MVVM
- ribs
- UITextView
- Xcode
- clean architecture
- Human interface guide
- rxswift
- HIG
- 리펙터링
- combine
- swift documentation
- SWIFT
- uitableview
- Protocol
- tableView
- 리팩토링
- map
- Observable
- swiftUI
- RxCocoa
- 스위프트
- Refactoring
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[iOS - swift] 2. 이미지 처리 - 회전 각도 메타 정보, 이미지 메타 다이터, imageOrientation 개념 (exif) 본문
iOS 응용 (swift)
[iOS - swift] 2. 이미지 처리 - 회전 각도 메타 정보, 이미지 메타 다이터, imageOrientation 개념 (exif)
jake-kim 2023. 11. 8. 01:272. 이미지 처리 - 회전 각도 메타 정보, 이미지 메타 다이터, imageOrientation (exif)
3. 이미지 처리 - 이미지 회전 메타 정보 제거 방법, 이미지 회전처리
이미지 회전 메타 정보
- 이미지 정보에는 항상 메타 정보와 함께 기록되는데, 아이폰에서 사진을 찍어도 메타 정보가 존재
- 아이폰에서 가로로 사진을 찍으면 회전 각도가 0이고, 세로로 사진을 찍으면 회전 각도가 반시계 방향 90도로 나타남
회전 각도 정보 확인 방법
- 아이폰에서 세로로 사진을 찍고 맥북에서 확인
- 미리보기 > 도구 > 속성 보기 클릭
- 일반 정보 창이 뜨는데 여기서 느낌표 아이콘 클릭
- 방향 정보가 존재
(해당 이미지)
Swift에서 회전된 메타 정보 확인하기 - imageOrientation
- UIImage의 프로퍼티인 imageOrientation값을 통해 메타 정보 확인이 가능
- 참고) 이런 메타 정보를 EXIF(Exchangeable Image File Format) 라고 명칭
- 디폴트 값은 "up"
- UIImage.Orientation이라는 enum이 있는데 이 enum으로 표현
- up부터 rightMirrored 순서대로 1부터
imageOrientation 사용 방법
- 아까 사용했던 jpg 이미지를 방향을 확인해보면 6(반시계 방향 90도) 확인 가능
- 이 6은 exif 형식 중 방향을 따른 것
- 8개의 방향을 의미
1. 방향 없음
2. 좌우 반전
3. 180도 회전 (180°)
4. 상하 반전
5. 상하 반전 후 90도 시계 방향으로 회전
6. 90도 시계 반대 방향으로 회전
7. 90도 시계 반대 방향으로 회전 후 좌우 반전
8. 90도 시계 방향으로 회전
- 아이폰 앨범에서 보여지는 사진들은 모두 이 orientation이 적용 완료된 화면을 보여주며, swift에서 asset을 사용할때도 이미 적용된 데이터가 보여짐
- 만약 이미지 서버를 사용할 때 이 exif 형식을 보내고, 이미지 서버에서 이것을 토대로 회전을 시키는 경우가 있는데 이를 대비한 처리가 필요
- imageOrientation를 사용하여 회전 정보 파악
- 이 이미지는 .right로 나오는 것을 확인 가능
var angle: CGFloat = 0.0
switch image.imageOrientation {
case .up, .upMirrored:
return image
case .right, .rightMirrored:
angle = 90
case .down, .downMirrored:
angle = 180
case .left, .leftMirrored:
angle = -90
@unknown default:
return image
}
EXIF 정보와 imageOrientation 정보
- EXIF정보와 imageOrientation 정보는 다르므로 주의할 것
- 위에서 imageOrientation을 확인하면 .right가 찍히는데, 맥북에서 미리 보기 화면의 EXIF에서 확인하면 angle이 반시계방향(-90도)로 표출
- swift에서의 imageOrientation은 swift내부에서 이미지를 그릴 때 표출하는 것이므로 exif와 연관지어서 생각하면 x
안전한 이미지 처리 방법
- EXIF 정보나 imageOrientation 정보가 다르고, 이미지를 이미지 서버에 업로드할 때 애초에 imageOrientation 정보를 제거하면 서로 혼돈이 없는 상태로 관리가 가능
- 아이폰 앨범에서 이미지 회전 메타 정보가 이미 적용된 결과를 보여주기 때문에, swift에서 사용할 때 메타 정보를 제거하고난 후 이미지 서버에 업로드하면 관리가 용이
- 메타 정보 제거하는 방법은 다음 포스팅 글에서 계속
* 참고
https://developer.apple.com/documentation/uikit/uiimage/orientation#overview
https://developer.apple.com/documentation/uikit/uiimage/1624141-imageorientation
'iOS 응용 (swift)' 카테고리의 다른 글
Comments