๐ธ iOS VisionCamera์ EXIF Orientation
์ฑ์์ ์นด๋ฉ๋ผ๋ก ์ฌ์ง์ ์ฐ๊ณ ํน์ ์์ญ๋ง ์๋ผ ๋ณด์ฌ์ค์ผ ํ ๋,
โ๊ธฐ๊ธฐ๋ฅผ ์ธ๋ก๋ก ๋ค๊ณ ์ฐ์๋์ง, ๊ฐ๋ก๋ก ๋ค๊ณ ์ฐ์๋์งโ
๊ทธ๋ฆฌ๊ณ โ์ด๋ฏธ์ง๊ฐ ์ค์ ๋ก ์ด๋ป๊ฒ ์ ์ฅ๋๊ณ ํ์๋๋์งโ๋
์๊ฐ๋ณด๋ค ๊น๋ค๋ก์ด ์ฃผ์ ๋ค.
ํนํ iOS, VisionCamera, ๊ทธ๋ฆฌ๊ณ EXIF Orientation(์ค๋ฆฌ์ํ
์ด์
) ๊ฐ์ ๊ด๊ณ๋ฅผ ์ดํดํ์ง ๋ชปํ๋ฉด
โ๋ด๊ฐ ๋ณธ ๋ฏธ๋ฆฌ๋ณด๊ธฐ์ ์ค์ ํฌ๋กญ๋ ์ด๋ฏธ์ง๊ฐ ์ ๋ค๋ฅธ์ง?โ
ํท๊ฐ๋ฆด ์๋ฐ์ ์๋ค.
โ ์ด ์ฃผ์ ๋ฅผ ๊ณต๋ถํ๊ฒ ๋ ์ด์
์นด๋ฉ๋ผ ์ดฌ์ ํ ์ฌ์ง์ ํน์ ๋ถ๋ถ๋ง ํฌ๋กญํด์ ๋ณด์ฌ์ค์ผ ํ๋ ๊ธฐ๋ฅ์ ๋ง๋ค๊ณ ์์๋ค.
ํ๋ฉด ๋ฐฉํฅ์ ํญ์ ์ธ๋ก(PORTRAIT)๋ก ๊ณ ์ ๋์ด ์์์ง๋ง,
๊ธฐ๊ธฐ๋ฅผ ์ธ๋ก๋ก ๋ค๊ณ ์ฐ์ ๋์ ๊ฐ๋ก๋ก ๋ค๊ณ ์ฐ์ ๋
ํฌ๋กญ๋ ์ด๋ฏธ์ง์ ์์ญ์ด ์๋ก ๋ฌ๋ผ์ง๋ ํ์์ ๊ฒฝํํ๋ค.
์ฒ์์ ๋จ์ํ ์๋ณธ ์ด๋ฏธ์ง์ width/height๊ฐ ๋ฌ๋ผ์ ธ์ ๊ทธ๋ฐ ์ค ์์๋ค.
ํ์ง๋ง ์ค์ ๋ก๋ ๊ฐ๋ก๋ก ์ฐ๋ , ์ธ๋ก๋ก ์ฐ๋ width/height ๊ฐ์ ๋ณํ์ง ์์๋ค.
๊ทธ๋ฐ๋ฐ๋ ํฌ๋กญ ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ผ์ง๋ ์ด์ ๋
๋ฐ๋ก ์ด๋ฏธ์ง์ โ์ค๋ฆฌ์ํ
์ด์
(EXIF Orientation)โ ๊ฐ ๋๋ฌธ์ด์๋ค.
๐ท iOS VisionCamera์ orientation ??
VisionCamera์์ takePhoto()
๋ฅผ ํธ์ถํ๋ฉด
photoData ๊ฐ์ฒด์
orientation (์: 'portrait', 'landscape-left' ๋ฑ)
metadata.Orientation (EXIF Orientation, 1~8 ์ซ์)
์ด ๋ ๊ฐ์ง ์ ๋ณด๊ฐ ํฌํจ๋๋ค.
์ด ๊ฐ๋ค์ ์ด๋ฏธ์ง๊ฐ ์ ์ฅ๋ ๋์ ์ผ์/๊ธฐ๊ธฐ ๋ฐฉํฅ๊ณผ ์ฌ์ง์ ๋ทฐ์ด์์ ์ด๋ป๊ฒ ํ์ ยท๋ฏธ๋ฌ๋งํด์ ๋ณด์ฌ์ค์ผ ํ๋์ง ๊ฒฐ์ ํด์ฃผ๋ ์ค์ํ ์ญํ ์ ํ๋ค.
๐งญ ์ ๋ฉด/ํ๋ฉด ์นด๋ฉ๋ผ๋ณ ์ค๋ฆฌ์ํ ์ด์ ๊ฐ์ ์ฐจ์ด
โ ํ๋ฉด(Rear) ์นด๋ฉ๋ผ
์ผ๋ฐ์ ์ผ๋ก
๊ฐ๋ก(landscape)๋ก ์ฐ์ผ๋ฉด:
orientation:landscape-right
(EXIF 1)์ธ๋ก(portrait)๋ก ์ฐ์ผ๋ฉด:
orientation:portrait
(EXIF 6)
์ผ์ ๊ธฐ์ค(landscape)์ ๋ง์ถฐ ์ ์ฅํ๊ณ ,
EXIF๋ก ํ์ ์ ๋ณด๋ฅผ ์ถ๊ฐํ๋ค.
โ ์ ๋ฉด(Front, ์ ์นด) ์นด๋ฉ๋ผ
์ฌ๊ธฐ์ ๋ ํท๊ฐ๋ฆฌ๋ ์ํฉ์ด ์๊ธด๋ค.
์ ๋ฉด ์นด๋ฉ๋ผ๋
๋ฏธ๋ฌ(์ข์ฐ๋ฐ์ , ๊ฑฐ์ธ ํจ๊ณผ)
์ผ์ ๋ฐฉํฅ
์ํํธ์จ์ด์ ์ค๋ฆฌ์ํ ์ด์ ๊ณ์ฐ
์ด ๋ชจ๋ ํฉ์ณ์ ธ์
๊ธฐ๊ธฐ๋ฅผ ์ธ๋ก๋ก ๋ค๊ณ ์ ์นด๋ฅผ ์ฐ์ด๋
orientation์ด 'landscape-left'(EXIF 5 ๋ฑ)๋ก ๋์ค๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
์ฆ, ๋ด๊ฐ ์ ๋ฉด ์ธ๋ก๋ก ์ฐ์๋๋ฐ๋ landscape๋ก ๋์ค๋ ๊ฑด
iOS ์ ๋ฉด ์นด๋ฉ๋ผ์์ ์ ์ ๋์์ด๋ค.
๐ท๏ธ EXIF Orientation(1~8) ๊ฐ์ ์๋ฏธ
๊ฐ | ์ค๋ช | ํ์ /๋ฐ์ |
---|---|---|
1 | ์ ์(ํ์ ์์) | 0ยฐ |
3 | 180๋ ํ์ | 180ยฐ |
6 | 90๋ ํ์ (์ธ๋ก) | 90ยฐ |
8 | 270๋ ํ์ (์ธ๋ก) | 270ยฐ |
2 | ์ข์ฐ๋ฐ์ | 0ยฐ + ์ข์ฐ ๋ฏธ๋ฌ |
4 | 180๋ ํ์ + ์ํ๋ฐ์ | 180ยฐ + ์ํ ๋ฏธ๋ฌ |
5 | 90๋ ํ์ + ์ข์ฐ๋ฐ์ (์ ์นด ๅค) | 90ยฐ + ์ข์ฐ ๋ฏธ๋ฌ |
7 | 270๋ ํ์ + ์ข์ฐ๋ฐ์ | 270ยฐ + ์ข์ฐ ๋ฏธ๋ฌ |
ํ๋ฉด ์นด๋ฉ๋ผ๋ ๋๋ถ๋ถ 1, 3, 6, 8 ๊ฐ์ด ๋์จ๋ค.
์ ๋ฉด ์นด๋ฉ๋ผ์์๋ 5, 6, 7 ๋ฑ ๋ฏธ๋ฌ ์กฐํฉ์ด ์์ฃผ ๋ฑ์ฅํ๋ค.
๐ก Orientation ๊ฐ์ด ์ ํฌ๋กญ ๊ฒฐ๊ณผ์ ์ํฅ์ ๋ฏธ์น๋๊ฐ?
์ด๋ฏธ์ง๋ ์ค์ ์ ์ฅ๋ ํฝ์
(width/height)์ ๊ณ ์ ๋์ด ์๋ค.
ํ์ง๋ง EXIF Orientation ๊ฐ์ด ๋ถ์ด ์์ผ๋ฉด
๊ฐค๋ฌ๋ฆฌ/์ด๋ฏธ์ง ๋ทฐ์ด์์๋ ์ด ๊ฐ์ ๋ฐ๋ผ ์ด๋ฏธ์ง๋ฅผ ์๋์ผ๋ก ํ์ ๋๋ ๋ฐ์ ํด์ ๋ณด์ฌ์ค๋ค.
๊ทธ๋ฐ๋ฐ,
ํฌ๋กญ ์ฐ์ฐ์ ๋๋ถ๋ถ โ์ด๋ฏธ์ง์ ์ค์ ํฝ์
๊ธฐ์คโ์ผ๋ก๋ง ๋์ํ๋ค.
์ฆ, ์๋ฅผ ๋ค์ด
์ฌ์ฉ์๋ ์ธ๋ก๋ก ๋ค๊ณ ์ ์นด๋ฅผ ์ฐ์๊ณ
ํ๋ฆฌ๋ทฐ์์๋ ์ผ๊ตด์ด ์ค์์ ์ ๋ณด์๋๋ฐ
์ค์ ์ ์ฅ๋ ์ด๋ฏธ์ง๋ ์ผ์(landscape ๊ธฐ์ค)๋ก ์ ์ฅ + EXIF orientation=6(90๋ ํ์ )
์ด ์ํ์์ โ์ค์์ ์๋ผ์ผ๊ฒ ๋ค!โ๊ณ
ํฝ์ ๊ธฐ์ค์ผ๋ก ์ค์์ ํฌ๋กญํ๋ฉด,
์ฌ์ฉ์๊ฐ ์ค์ ๋ก ๊ธฐ๋ํ ์ผ๊ตด ์์ญ์ด ์๋๋ผ
์ฌ์ง์ 90๋ ๋๋ ธ์ ๋์ ์ค์ ์์ญ(์๋ฑํ ๋ถ๋ถ)์ด ์๋ฆด ์ ์๋ค.
์ฝ๊ฒ ๋งํด
EXIF orientation์ ๋ฌด์ํ๋ฉด โ๋๋ ค์ ์๋ผ์ผ ํ ์ด๋ฏธ์งโ๋ฅผ
๊ทธ๋ฅ ๋ํ๋๊ณ ์๋ผ์
์ํ๋ ๋ถ๋ถ์ด ์๋๋ผ ์๋ฑํ ๋ถ๋ถ์ด ๋์ฌ ์ ์๋ค.
๋ฐ๋ผ์, ์ ํํ ํ๋ฆฌ๋ทฐ์์ ๋ณธ ์์ญ์ ์๋ผ๋ด๊ณ ์ถ์ผ๋ฉด
์ด๋ฏธ์ง์ EXIF orientation ๊ฐ์ ๋ฐ๋ผ
๋จผ์ ์ด๋ฏธ์ง๋ฅผ ํ์ /๋ฏธ๋ฌ๋ง ๋ณด์ ํ ๋ค์
ํฌ๋กญ ์ฐ์ฐ์ ํด์ผ ํ๋ค.
๐ ๏ธ ๋ฐฉ๋ฒ
ํฌ๋กญ ์ฐ์ฐ ์ ์ EXIF Orientation ๊ฐ์ ์ฝ๊ณ ,
์ด๋ฏธ์ง์ ๋ง๋ ํ์ /๋ฏธ๋ฌ ๋ณด์ ์ ๋จผ์ ํด์ค ๋ค์
ํฌ๋กญ์ ํด์ผ
๋ชจ๋ ์ํฉ์์ โํ๋ฆฌ๋ทฐ์์ ๋ณธ ๋ชจ์ตโ๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์๋ค.
orientation ๋ณด์ ์์ด ์๋ฅด๋ฉด
์์๊ณผ ๋ค๋ฅธ ์์ญ์ด ์๋ฆด ๊ฐ๋ฅ์ฑ์ด ๋๋ค.
โ ์ ๋ฆฌ
iOS VisionCamera์ orientation ๊ฐ(์ ๋ฉด/ํ๋ฉด)์
์ผ์ ๋ฐฉํฅ, ๋ฏธ๋ฌ ์ฌ๋ถ, ์ํํธ์จ์ด ํ์ ๋ณด์ ๋ฑ์ด ๋ชจ๋ ํฉ์ณ์ง ๊ฒฐ๊ณผ๋ค.์ ๋ฉด(์ ์นด) ์นด๋ฉ๋ผ๋ orientation ๊ฐ์ด ๋ด๊ฐ ๋ ๊ธฐ๊ธฐ ๋ฐฉํฅ๊ณผ ๋ค๋ฅผ ์ ์๋ค.
EXIF Orientation ๊ฐ์ ๋ฐ๋ผ
ํฌ๋กญ ์์น์ ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ผ์ง ์ ์์ผ๋
๋ฐ๋์ orientation ๋ณด์ ํ ํฌ๋กญํ๋ ๊ฒ์ด ์์ ํ๋ค.