JPEG ํ์ผ๊ตฌ์กฐ๋ Joint Photographic Experts Group์ ์ค์๋ง๋ก, ์ด๋ฏธ์ง ์์ถํ์ ํ์ผ ํ์ฅ์์ ๋๋ค.
JPEG์ common segment (=signature)๋ ff d8์ด๋ฉฐ,
ํฌํ ์ต ๋ฑ ํธ์ง ํ๋ก๊ทธ๋จ์ผ๋ก ์์ฑ/์์ ๋ ํ์ผ์ FF D8 FF E0
ํธ๋ํฐ ์นด๋ฉ๋ผ, DSLR ๋ฑ ์นด๋ฉ๋ผ๋ก ์ฐ์ ํ์ผ์ FF D8 FF E1์ด segment๋ก ์ ํด์ง๋๋ค.
ํ์ง๋ง common segment๋ฅผ ์ ์ธํ ๋ค์ 2byte ๊ฐ์ ์กฐ๊ฑด์ ๋ฐ๋ผ ๋ฐ๋ ์ ์์ต๋๋ค.
์ด์ ๋ ์๋์์ ์ค๋ช ํฉ๋๋ค.
JFIF vs Exif
Reference: https://velog.io/@nurungg/JPEG-image-format
์ฐ์ ์ฐ๋ฆฌ๊ฐ JPEG์ ๋ํ์ฌ ์๊ธฐ ์ํด์๋ JPEG๊ฐ ์ ์ฅ๋๋ ํ์์ ์์์ผ ํฉ๋๋ค.
๋ณธ๋ JPEG๋ JIFํํ๋ก ์ ์ฅ๋์์ต๋๋ค. ํ์ง๋ง ์ต๊ทผ์๋ JIF๊ฐ ๋ฐ์ ํ ์ฌ๋ฌ ํํ๋ก ์ฌ์ฉ๋๋๋ฐ, ์ด๊ฐ ๋ฐ๋ก JFIF๋ Exif์ ๋๋ค.
๋ ๋ชจ๋ JIF์ ํ์ฅ ํํ์ธ๋ฐ, ๊ฐ๊ฐ APP0 / APP1์ด๋ผ๋ mark segment๋ฅผ ์ฌ์ฉํ์ฌ application-specific ๋ฐ์ดํฐ๋ฅผ ๋ด์ต๋๋ค.
mark segment (=marker):
ํต์์ ์ผ๋ก marker๋ผ๊ณ ํ๋ฉฐ, ๋ค์ ํน์ ํ ๋ด์ฉ์ด ์์์ ํ์ํด์ฃผ๋ ๋จ์ด ์ ๋๋ก ์ดํดํ๋ฉด ๋ฉ๋๋ค. ์ค์ ํ์ผ์ ์ด marker๋ช
์ด ๋ฐ๋ก ์ ํ์ง ์๊ณ , ํน์ HEX๊ฐ์ ๋ณด๊ณ marker๋ผ๊ณ ํฉ๋๋ค. ๋ค์ ์ด๋ค ๋ด์ฉ์ด ๋์ฌ์ง์ ๋ํ ๊ฐ์๊ฐ ๋๋ค๊ณ ๋ณด์๋ฉด ๋ฉ๋๋ค. (์ธํฐ๋ท ๋ฑ์ ์ ํํ ์ค๋ช
์ด ์์ด์ ์ดํดํ๋๋ก ์์ฑํ์ต๋๋ค.)
JPEG ํ์ผ์ ์ด๋ฃจ๋ ๋ธ๋ก์ ์์์ ๋ํ๋ ๋๋ค. ๊ฐ ๋ธ๋ก์ ์์๋ถ๋ถ์ marker๊ฐ ์์ผ๋ฉฐ, marker์ ๊ฐ์ ํญ์ ๊ณ ์ ๋์ด์์ผ๋ฏ๋ก ์ด๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฅํฉ๋๋ค.
application-specific:
์ดํ๋ฆฌ์ผ์ด์ ์์ ์ฐธ๊ณ ํ ์ ์๋ ์ด ํ์ผ์ ๋ํ ์์ธ ๋ด์ฉ์ ๋งํฉ๋๋ค. ์ดฌ์์ผ, ์ดฌ์์ฅ์น, ์ ์กฐ์ฌ ๋ฑ์ ๋ด์ฉ์ด ํด๋น๋ฉ๋๋ค.
JFIF๋ ์ด๋ฏธ์ง ํธ์ง ์ํํธ์จ์ด์์ ๋ค์ ์ฌ์ฉ๋๋ ํฌ๋งท์ผ๋ก, JIF์ ํ์ฅ ๋ฒ์ ์ด์ ์ฌ๋ฌ metadata๋ฅผ ํจ๊ป ์ ์ฅํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ฌ๋ฌ ํ๋ซํผ, ์ ํ๋ฆฌ์ผ์ด์ ์ ํธํ์ด ๊ฐ๋ฅํฉ๋๋ค.
Exif๋ ์นด๋ฉ๋ผ ์ฐ์ ๊ณ์์ ํ์ค์ ์ผ๋ก ์ฌ์ฉ๋๋ ํฌ๋งท์ด๊ณ , ์นด๋ฉ๋ผ ๋ฑ์ผ๋ก ์ดฌ์ํ๋ฉด ์ด๋ก ์ ์ฅ๋ฉ๋๋ค.
JFIF์ Exif๊ด๋ จ ๋ด์ฉ์ ๋จผ์ ๋ค๋ฃจ๋ ์ด์ ๋ JPEG๊ฐ ๋๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ๋ด๊ธฐ ๋๋ฌธ์ธ๋ฐ,
๊ฐ ๋ฐฉ์์ ์์ ๋ค์ด ์ฌ์ฉํ๋ mark segment๋ฅผ ๋จผ์ ์ ์ฅํ๋ ค๊ณ ํฉ๋๋ค.
๋ฐ๋ผ์ ๋ง์ฝ ์ด๋ฏธ์ง ํธ์ง ์ํํธ์จ์ด์์ JPEGํ์ผ์ ์ ์ฅํ๋ค๋ฉด JFIF๊ฐ ๋จผ์ ์ ์ฅ๋ฉ๋๋ค. ๋ฐ๋ผ์ FF D8 FF E0์์ผ๋ก ํ์ผ HEX๊ฐ ์ ์ฅ๋ฉ๋๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก ๋ง์ฝ ์นด๋ฉ๋ผ์์ ์ฌ์ง์ ์ฐ์ด JPEG์ผ๋ก ์ ์ฅํ๋ค๋ฉด Exif๊ฐ ๋จผ์ ์ ์ฅ๋ฉ๋๋ค. ๋ฐ๋ผ์ FF D8 FF E1์์ผ๋ก ํ์ผ HEX๊ฐ ์ ์ฅ๋ฉ๋๋ค.
=> ๋ฐ๋์ ์ด๋ฐ ๊ฒ์ ์๋๋๋ค. ์ ์กฐ์ฌ๋ง๋ค, ์ดฌ์ํ๋ ์กฐ๊ฑด๋ง๋ค ๋ฌ๋ผ์ง ์ ์์ต๋๋ค.
ํ์ผ ๊ตฌ์กฐ
Reference: https://yebig.tistory.com/200
์ ์ฒด์ ์ธ ํ์ผ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
SOI | ์ด๋ฏธ์ง์ ์์ (Start Of Image) |
APPn | application-specific (n: 0~15) (ํต์์ ์ผ๋ก APP0์ด ๋จผ์ , ์ดํ APPn๋ค์ด ๋ฐ๋ผ์ค์ง๋ง, APP1์ด ๋จผ์ ์ฌ ์๋ ์์) |
DQT | ์์ํ ํ ์ด๋ธ (Define Quantization Tables) |
SOF | (Start Of Frame) |
DHT | (Define Huffman Tables) |
SOS | (Start Of Scan) |
-Scan Data- | ์ค์บ ๋ฐ์ดํฐ |
EOI | (End Of Image) |
1. SOF
ํ์ผ์ ์์์ ๋ํ๋ด๋ ๊ฒ์ผ๋ก, ์์์ ๋งํ common segment์ ๋๋ค.
FF D8
2. JFIF
JFIF๋ ์๋์์ ์ค๋ช ํ Exif์ ์ ์ฅ์์๊ฐ ๋ฐ๋ ์ ์์ต๋๋ค.
์ดฌ์ํ๋ ์กฐ๊ฑด, ๊ธฐ๊ธฐ ๋ฑ์ ๋ฐ๋ผ ๋ค๋ฅผ ์ ์์ต๋๋ค.
ํ์๋ ์๋ ์กฐ๊ฑด์์ ์ดฌ์ํ ์ฌ์ง์ ๊ธฐ์ค์ผ๋ก ์ค๋ช ํฉ๋๋ค
๊ธฐ์ข : ๊ฐค๋ญ์ S8
์ฑ: SNOW
SOI ๋ค์์๋ ๋ณดํต JFIF๊ฐ ์ต๋๋ค.
JFIF๊ฐ์ ์ด๋ก ์ ํญ์ ํ์์ ์ผ๋ก ๋ค์ด๊ฐ๋๋ค. ์ด๋ก ์์ผ๋ก๋ FF E0๊ฐ ํญ์
JFIF์ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
์ด๋ฆ | ํฌ๊ธฐ (๋จ์: byte) | ์ค๋ช |
APP0 | 2 | JFIF Marker. ๊ฐ ๊ณ ์ : FF E0 |
length | 2 | JFIF Marker๋ฅผ ์ ์ธํ JFIF ์ ๊ตฌ์กฐ์ ๊ธธ์ด. |
fixed identifier | 5 | ๊ฐ์์ ํํ. ๊ฐ ๊ณ ์ : 4A 46 49 46 00 (="JFIF\0") |
version | 2 | JFIF ๋ฒ์ . ์์๋๋ก Major Version | Minor Version ๋ฒํธ๋ฅผ ๋ํ๋ |
density unit | 1 | ์ธ๋ค์ผ ํด์๋ ๋จ์. 0: ๋จ์ X. ๊ฐ๋ก:์ธ๋ก ๋น์จ = ์๋ 2๊ฐ ํ๋๊ฐ์ผ๋ก ์ง์ 1: pixel per inch 2: pixel per centimeter |
Xdensity | 2 | ๊ฐ๋ก ํด์๋ ( != 0 ) |
Ydensity | 2 | ์ธ๋ก ํด์๋ ( != 0 ) |
Xthumbnail | 1 | ์ธ๋ค์ผ ๊ฐ๋ก ๊ธธ์ด |
Ythumbnail | 1 | ์ธ๋ค์ผ ์ธ๋ก ๊ธธ์ด |
Thumbnail | ๊ฐ๋ณ | ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์ด๋ฏธ์ง. ํฝ์ ๋ฐ์ดํฐ |
์ธ๋ค์ผ์ด ์ฐ๋ฆฌ์๊ฒ ์น์ํ์ง๋ ์์๋ฐ, ์ฝ๊ฒ ๋งํ๋ฉด ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์ด๋ฏธ์ง ์ ๋๋ค.
์ธ๋ค์ผ์ ๋ณดํต ์ฐ๋ฆฌ๊ฐ ํ์ผํ์๊ธฐ๋ ํ์ธ๋์์ ๋ณด๋ ์ด๋ฏธ์ง ํ์ผ ์์ด์ฝ์ ๋๋ค.
ํ์ง๋ง ์ธ๋ค์ผ์ ์์์๋, ์์์๋ ์๊ธฐ ๋๋ฌธ์ ๋ง์ฝ ์๋ค๋ฉด ์ด์์ฒด์ ์์ ์ฌ์ง ๋ฐ์ดํฐ๋ฅผ ์ค์ฌ์ ๋์ ํ์ํด์ฃผ๊ฑฐ๋, ๊ธฐ๋ณธ ์ด๋ฏธ์ง๋ฅผ ํ์ํฉ๋๋ค.
์ธ๋ค์ผ ์ด๋ฏธ์ง๋ฅผ ํ์ธํ๊ณ ์ถ๋ค๋ฉด ์๋ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ์ธ์:
https://www.dcode.fr/exif-thumbnail
2-1. JFIF Extension APP0 marker segment (=JFXX)
์ ํ์ ์ผ๋ก ํ์ผ์ ์กด์ฌํ๋ JFXX๋ ์กด์ฌํ ๊ฒฝ์ฐ ํญ์ JFIF APP0๋ค์ ๋ถ์ด์ ์กด์ฌํ๋ฉฐ, ์๋์ ๊ฐ์ ํ์์ผ๋ก ์์ฑ๋ฉ๋๋ค:
์ถ๊ฐ ๋ฐ์ดํฐ ์ ๋ฌด | ๊ฐ | ์์ง | ์ค๋ช |
์ถ๊ฐ ๋ฐ์ดํฐ ์์ | FF D0 ~ FF D7 | RST0~RST7 | Restart Marker: DRI Marker์์ ์ ์๋ ๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ค์บ ๋ฐ์ดํฐ ์์์ ๋ฐ๋ณต์ ์ผ๋ก ๋์ด๋ฉฐ, ์์๋ JPEG๋ฅผ ์ต๋ํ ๋ณต์ํ๊ธฐ ์ํด ์ฌ์ฉ |
FF D8 | SOI | ์ด๋ฏธ์ง์ ์์ | |
FF D9 | EOI | ์ด๋ฏธ์ง์ ๋ | |
์ถ๊ฐ ๋ฐ์ดํฐ ์์ | FF C0 ~ FF C2 | SOF0~SOF2 | |
FF C4 | DHT | ||
FF DA | SOS | ||
FF DB | DQT | ||
FF DD | DRI | ||
FF E0 ~ FF EF | APP0~APP15 | ์ดํ๋ฆฌ์ผ์ด์ ์์ธ ๋ฐ์ดํฐ (Application Specific Data) | |
FF FE | COM | ์ฃผ์ (Comment) |
<ํ2> JFIF ๋ง์ปค
์๋ JFIF์์ ๋ณดํต ์ฌ์ฉํ๋ marker์ ๋๋ค. ์ฐธ๊ณ ๋ง ํ์๋ฉด ๋ฉ๋๋ค.
--- Update Point: 2021.03.27 18:27:40
[๋ฏธ์์ฑ ๊ฒ์๋ฌผ ์ ๋๋ค. ์ถํ ์ ๋ฐ์ดํธ ๋ฉ๋๋ค]
'๐ ๋ณด์,์ ๋ณด๋ณดํธ > ๐ [STUDY] ํฌ๋ ์' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ 1์ฃผ์ฐจ ] Suninatas - 21๋ฒ (0) | 2021.07.15 |
---|---|
[ 1์ฃผ์ฐจ ] N0Named Wargame - Left Side B (0) | 2021.07.15 |
[ 1์ฃผ์ฐจ ] N0Named Wargame - ๊ธธ์์ ์ฃผ์ด์จ ๋ง๋ (0) | 2021.07.15 |
[ 1์ฃผ์ฐจ ] N0Named Wargame - ์ ์ฌ ํ ์คํธ[2] (0) | 2021.07.15 |
[ 1์ฃผ์ฐจ ] N0Named Wargame - MagicIMAGE (0) | 2021.07.15 |