1. 程式人生 > >JPEG影象EXIF資料資訊的解析

JPEG影象EXIF資料資訊的解析

剛剛結束本科生活的我,那會還比較頹廢,但是因為讀研,導致寶寶七月初就到了學校,來了以後也不知道該做什麼,就出去浪呀~哈哈,不料來了不久後接到老師的任務,讓寶寶把JPEG影象的EXIF資訊解讀出來,當時內心OS大抵是:什麼?老師說了什麼?當時對於EXIF完全陌生,沒有一點概念,寶寶在百度之後,也是比較蒙圈的,不過還是拖拖拉拉的去整理了一下,能百度到的相關資料比較有限,但還是參考了好多大神的博文,灰常有用,但是有些解讀資料的部分介紹的很簡單,對於初次嘗試解讀資訊的我們來說摸不著頭腦,布吉島怎麼出來的,我自己嘗試過後,大體都解讀出來了,有些問題還沒有完全弄明白是為什麼(加了底紋顏色,請多指教),只是摸到了規律,but還是先貼出來遛遛。。。。。。

恩~EXIF資訊到底是什麼就不介紹了,既然要做這個自然是已經百度過了,有相關概念的,而如何檢視JPEG影象的EXIF資訊,這個嘛,我自己是下載了一個WinHEX,很方便哦。順便安利一個MagicEXIF編輯器,可以清楚地看到你的JPEG影象所包含的所有資訊。既然能檢視EXIF資訊了,那如何將一串串的HEX形式的資訊和了解到的文字性質的屬性對應起來呢?下面我們就開始解讀咯~


FF D8SOIStart of image)標記

FF E1APP1標記

 

APP1資料

35 89APP1資料大小

45786966 0000Exif

49492A00 08000000

TIFF 頭,4949表示按照 "Intel" 的位元組序(Little Endian) 來排列資料,2A00表示兩個位元組長度,08000000表示到第一個IFD的偏移量為8

0E 00:目錄項的號碼=14

 

專案0

 

0E 01:代表標籤號,對應的標籤名為   ImageDescription

02 00:資料值為2,代表資料格式為ascii strings

1B 00 00 00:元件的數目=2727個位元組)

F4 03 00 00:資料的偏移量  (地址03F4)

 

紅框開始的位置為起始地址,偏移12個位元組,黃框之內的內容為資料內容,共

27個位元組(00表示空格)。相關驗證如下圖:

 

 

專案1

 

0F 01:代表標籤號,對應的標籤名為 Make

02 00:資料值為2,代表資料格式為ascii string

1E 00 00 00:元件的數目=3030個位元組)

0F 04 00 00:資料的偏移量(地址040F

 

紅框位置為起始地址,偏移12個位元組,黃框之內的為資料內容(30個位元組,‘00’代表空格),驗證如下圖:

 

 

專案2

 

10 01:代表標籤號,對應的標籤名為 Model

02 00:資料值為2,代表資料格式為 ascii string

1E 00 00 00:元件的數目=3030個位元組)

2D 04 00 00:資料的偏移量(地址042D

 

紅框位置為起始位置,偏移12位元組,黃框之內為資料內容(30個位元組,‘00’表示空格),驗證如下圖:

 

 

專案3

 

12 01:代表標籤號,對應的標籤名為  Orientation

03 00:資料值為3,代表資料格式為 unsigned short

01 00 00 00:元件的數目=12個位元組)

01 00 00 00:資料值=1 ,見下圖(value=1,上/左)

 

 

 

 

 

專案4

 

1A 01:代表標籤號,對應的標籤名為XResolution

05 00:資料值為5,代表資料格式為 unsigned rational

01 00 00 00:元件的數目=18個位元組)

4B 04 00 00:資料的偏移量(地址044B

 

紅框位置為起始地址,偏移12位元組,黃框內為資料內容(8個位元組),十六進位制(48 00 00 00=十進位制(72),十六進位制(01 00 00 00=十進位制(1),XResolution=72/1

 

 

 

 

專案5

 

1B 01:代表標籤號,對應的標籤名為YResolution

05 00:資料值為5,代表資料格式為 unsigned rational

01 00 00 00:元件的數目=18個位元組)

53 04 00 00資料的偏移量(地址0453

 

紅框位置為起始地址,偏移12位元組,黃框內為資料內容(8個位元組),十六進位制(48 00 00 00=十進位制(72),十六進位制(01 00 00 00=十進位制(1),XResolution=72/1

 

 

 

專案6

 

28 01:代表標籤號,對應的標籤名為ResolutionUnit

03 00:資料值為3,代表資料格式為 unsigned short

01 00 00 00:元件數目=12個位元組)

02 00 00 00:資料值=2(英寸),見下圖。

 

 

 

專案7

 

31 01:代表標籤號,對應的標籤名為Software

02 00:資料值為2,代表資料格式為ascii string

18 00 00 00:元件的數目=2424個位元組)

5B 04 00 00:資料的偏移量(地址04 5B

 

紅框位置為起始地址,偏移12位元組,黃框內為資料內容(24個位元組),驗證如下圖:

 

 

 

 

專案8

 

32 01:代表標籤號,對應的標籤名為DateTime

02 00:資料值為2,代表資料格式為 ascii string

14 00 00 00:元件數目=2020個位元組)

73 04 00 00:資料的偏移量(地址0473

 

紅框位置為起始地址,偏移12位元組,黃框內為資料內容(20個位元組),驗證如下圖:

 

專案9

 

13 02:代表標籤號,對應的標籤名為YCbCrPositioning

03 00:資料值為3,代表資料格式為 unsigned rational

01 00 00 00:元件數目=12個位元組)

01 00 00 00:資料值=1,見下圖,‘1’表示畫素陣列的中心

 

 

 

專案10

 

69 87:代表標籤號,對應的標籤名為ExifOffset

04 00:資料值為4,代表資料格式為 unsigned long

01 00 00 00:元件數目=14個位元組)

B6 00 00 00:資料值=182ExifIFD的偏移量

 

 

 

 

專案11

 

25 88:代表標籤號,對應的標籤名為GPSInfo   (Misc Tags)

04 00:資料值為4,代表資料格式為 unsigned long

01 00 00 00:元件數目=14個位元組)

AE 02 00 00:資料值=686GPS目錄偏移量)

 

 

專案12

 

9C 9C:代表標籤號,對應的標籤名為 備註

01 00:資料值為1,代表資料格式為 unsigned byte

00 01 00 00:元件數目=256256個位元組)

87 04 00 00:資料的偏移量(地址0487

 

紅框位置為起始地址,偏移12位元組,黃框內為資料內容(256個位元組),驗證如下圖:

 

 

 

 

 

 

專案13

 

9E 9C:代表標籤號,對應的標籤名為  關鍵詞

01 00:資料值為1,代表資料格式為 unsigned byte

00 01 00 00:元件數目=256256個位元組)

87 05 00 00:資料的偏移量(地址0587

 

紅框位置為起始地址,偏移12位元組,黃框內為資料內容(256個位元組),驗證如下圖:

 

 

 

 

 

 

拍攝引數(子IFD

08 03 00 00

27 00:十六進位制(27=十進位制(39),目錄號的數目=39

 

專案0

 

9A 82:代表標籤號,對應的標籤名為Exposure Time

05 00:資料值為5,代表資料格式為unsigned rational

01 00 00 00:元件數目=18個位元組)

87 06 00 00:資料偏移量(地址0687),有理數翻轉?如下圖所示:

 

 

Rational為有理數型別,計算結果用分子分母表示,同時,將黃框內資料按每四個位元組進行翻轉計算,前四位作為分子,H000007D0=2000,後四位作為分母,H000F4240=1000000最終結果:2000/1000000=1/500(預設單位)。

 

專案1

 

9D 82:代表標籤號,對應的標籤名為FNumber

05 00:資料值為5,代表資料格式為unsigned rational

01 00 00 00:元件的數目=18個位元組)

8F 06 00 00:資料的偏移量(地址068F

 

Rational為有理數型別,計算結果用分子分母表示,同時,將黃框內資料按每四個位元組進行翻轉計算,前四位作為分子,H00000230=560,後四位作為分母,H00000064=100最終結果=560/100=5.6

專案2

 

22 88:代表標籤號,對應的標籤名為ExposureProgram

03 00:資料值為3,代表資料格式為unsigned short

01 00 00 00:元件的數目=12個位元組)

02 00 00 00:資料值=2,‘2’表示正常程式曝光

 

 

 

 

專案3

 

27 88:代表標籤號,對應的標籤名為ISOSpeedRatings

03 00:資料值為3,代表資料格式為unsigned short

01 00 00 00:元件的數目=12個位元組)

64 00 00 00:資料值=100,十六進位制(64=十進位制(100

 

 

 

 

 

 

 

 

 

 

 

專案4

 

00 90:代表標籤號,對應的標籤名為ExifVersion

07 00:資料值為7,代表資料格式為undefined

04 00 00 00:元件數目=44個位元組)

30 32 33 30:資料值=0230,表明Exif版本是2.3的,相關解釋如下圖:

 

 

 

專案5

 

03 09:代表標籤號,對應的標籤名為DateTimeOriginal

02 00:資料值為2,代表資料格式為ascii strings

14 00 00 00:元件數目=2020個位元組)

97 06 00 00:資料的偏移量(地址0697

 

紅框位置為起始地址,偏移12位元組,黃框內為資料內容(20個位元組),驗證如下圖:

 

 

 

 

專案6

 

04 90:代表標籤號,對應的標籤名為DateTimeDigitized

02 00:資料值為2,代表資料格式為ascii strings

14 00 00 00:元件數目=2020個位元組)

AB 06 00 00:資料的偏移量(地址06AB)

 

紅框位置為起始地址,偏移12位元組,黃框內為資料內容(20個位元組),驗證如下圖:

 

 

 

 

專案7

 

01 91:代表標籤號,對應的標籤名為ComponentsConfiguration

07 00:資料值為7,代表資料格式為undefined

04 00 00 00:元件數目=44個位元組)

00 03 02 01:資料值,01,02,03,見下圖:

 

 

 

專案8

 

02 91:代表標籤號,對應的標籤名為CompressedBitsPerPixel

05 00:資料值為5,代表資料格式為unsigned rational

01 00 00 00:元件數目=18個位元組)

BF 06 00 00:資料的偏移量(地址06BF

 

紅框位置為起始地址,偏移12位元組,黃框內為資料內容(8個位元組),驗證如下:

 

Rational為有理數型別,計算結果用分子分母表示,同時,將黃框內資料按每四個位元組進行翻轉計算,前四位作為分子,H0083ADE2=8629730,後四位作為分母,H00261300=2495232,最終結果=8329730/2495232=3.458488

 

 

專案9

 

01 92:代表標籤號,對應的標籤名為ShutterSpeedValueJPEG (粗略的估計)的平均壓縮率

0A 00:資料值為10,代表資料格式為signed rational

01 00 00 00:元件數目=18個位元組)

C7 06 00 00:資料的偏移量(地址06C7

 

 

Rational為有理數型別,計算結果用分子分母表示,同時,將黃框內資料按每四個位元組進行翻轉計算,前四位作為分子,HFFFFDCFB=4294958331,後四位作為分母,HFFFFFC18=4294966296,最終結果為10.8?????    此處結果有疑問

 

 

 

 

 

 

 

 

 

 

專案10

 

02 92:代表標籤號,對應的標籤名為ApertureValue

05 00:資料值為5,代表資料格式為unsigned rational

01 00 00 00:元件數目=18個位元組)

CF 06 00 00:資料的偏移量(地址06CF

 

 

Rational為有理數型別,計算結果用分子分母表示,同時,將黃框內資料按每四個位元組進行翻轉計算,前四位作為分子,H000001F1=497,後四位作為分母,H00000064=100,最終結果=497/100=4.97

 

 

 

專案11

 

04 92:代表標籤號,對應的標籤名為ExposureBiasValue

0A 00:資料值為10,代表資料格式為signed rational

01 00 00 00:元件數目=18個位元組)

D7 06 00 00:資料的偏移量(地址06D7

 

Rational為有理數型別,計算結果用分子分母表示,同時,將黃框內資料按每四個位元組進行翻轉計算,前四位作為分子,H00000000=0,後四位作為分母,H00000020=32,最終結果=0/32=0

專案12

 

05 92:代表標籤號,對應的標籤名為MaxApertureValue

05 00:資料值為5,代表資料格式為unsigned rational

01 00 00 00:元件數目=18個位元組)

DF 06 00 00:資料的偏移量(地址06DF

 

Rational為有理數型別,計算結果用分子分母表示,同時,將黃框內資料按每四個位元組進行翻轉計算,前四位作為分子,H00000129=297,後四位作為分母,H00000064=100,最終結果=297/100=2.97

 

 

 

專案13

 

06 92:代表標籤號,對應的標籤名為SubjectDistance

05 00:資料值為5,代表資料格式為unsigned rational

01 00 00 00:元件數目=18個位元組)

E7 06 00 00:資料的偏移量(地址06E7

 

十六進位制(00000000)=十進位制(0),十六進位制(00000064=十進位制(100)。

Rational為有理數型別,計算結果用分子分母表示,同時,將黃框內資料按每四個位元組進行翻轉計算,前四位作為分子,後四位作為分母,最終結果=0/100=0

 

 

專案14

 

07 92:代表標籤號,對應的標籤名為MeteringMode

03 00:資料值為3,代表資料格式為unsigned short

01 00 00 00:元件數目=12個位元組)

02 00 00 00:資料值=2,‘2’為中央重點測光

 

 

 

專案15

 

08 92:代表標籤號,對應的標籤名為LightSource

03 00:資料值為3,代表資料格式為unsigned short

01 00 00 00:元件數目=12個位元組)

00 00 00 00:資料值=0,‘0’意味著未知。

 

 

 

專案16

 

09 92:代表標籤號,對應的標籤名為Flash

03 00:資料值為3,代表資料格式為unsigned short

01 00 00 00:元件數目=12個位元組)

20 00 00 00:資料值=32

 

 

 

專案17

 

0A 92:代表標籤號,對應的標籤名為FocalLength

05 00:資料值為5,代表資料格式為unsigned rational

01 00 00 00:元件數目=18個位元組)

EF 06 00 00:資料的偏移量(地址06EF

 

 

Rational為有理數型別,計算結果用分子分母表示,同時,將黃框內資料按每四個位元組進行翻轉計算,前四位作為分子,H00000370=880,後四位作為分母,H00000064=100,最終結果=880/100=8.8

 

 

專案18

 

7C 92:代表標籤號,對應的標籤名為MakerNote

07 00:資料值為7,代表資料格式為 undefined

00 04 00 00:元件數目=10241024個位元組)

F7 06 00 00:資料偏移量(地址06F7

 

 

專案19

 

00 A0:代表標籤號,對應的標籤名為FlashPixVersion

07 00:資料值為7,代表資料格式為 undefined

04 00 00 00:元件數目=44個位元組)

30 30 31 30:資料值=0100H30313030=string0100), 如果影象資料是基於 FlashPix formar Ver.1.0, 則這個值為 "0100".

 

 

專案20

 

01 A0:代表標籤號,對應的標籤名為ColorSpace

03 00:資料值為3,代表資料格式為unsigned short

01 00 00 00:元件數目=12個位元組)

01 00 00 00:資料值=1,‘1’表示影象使用sRGB色彩空間

 

 

專案21

 

02 A0:代表標籤號,對應的標籤名為ExifImageWidth

04 00:資料值為4,代表資料格式為 unsigned long

01 00 00 00:元件數目=14個位元組)

60 15 00 00:資料值=5472,十六進位制(00001560=十進位制(5472)。

 

 

專案22

 

03 A0:代表標籤號,對應的標籤名為ExifImageHeight

04 00:資料值為4,代表資料格式為 unsigned long

01 00 00 00:元件數目=14個位元組)

40 0E 00 00:資料值=3648,十六進位制(00000E40=十進位制(3648)。

 

 

 

專案23

 

05 A0:代表標籤號,對應的標籤名為ExifInteroperabilityOffset

04 00:資料值為4,代表資料格式為 unsigned long

01 00 00 00:元件數目=14個位元組)

90 02 00 00:資料值=656,十六進位制(00000290=十進位制(656)。

 

 

 

專案24

 

15 A2:代表標籤號,對應的標籤名為ExposureIndex

05 00:資料值為5,代表資料格式為 unsigned rational

01 00 00 00:元件數目=18個位元組)

F7 0A 00 00:資料偏移量(地址0AF7

 

Rational為有理數型別,計算結果用分子分母表示,同時,將黃框內資料按每四個位元組進行翻轉計算,前四位作為分子,後四位作為分母,最終結果=0

 

 

專案25

 

00 A3:代表標籤號,對應的標籤名為FileSource

07 00:資料值為7,代表資料格式為 undefined

01 00 00 00:元件數目=11個位元組)

03 00 00 00:資料值=3 '0x03' 表示影象源是數字定格相機

 

 

 

 

專案26

 

01 A3:代表標籤號,對應的標籤名為SceneType

07 00:資料值為7,代表資料格式為 undefined

01 00 00 00:元件數目=11個位元組)

01 00 00 00:資料值=1 '0x01' 表示影象是通過相機直接拍攝出來的

 

 

 

 

專案27

 

01 A4:代表標籤號,對應的標籤名為CustomRendered

03 00:資料值為3,代表資料格式為 unsigned short

01 00 00 00:元件數目=12個位元組)

00 00 00 00:資料值=0 '0x00' 表示影象未啟用自定義處理。

 

 

專案28

 

02 A4:代表標籤號,對應的標籤名為ExposureMode

03 00:資料值為3,代表資料格式為unsigned short

01 00 00 00:元件數目=12個位元組)

00 00 00 00:資料值=0 '0x00' 表示影象曝光模式為:自動曝光

 

 

 

專案29

 

03 A4:代表標籤號,對應的標籤名為WhiteBalance

03 00:資料值為3,代表資料格式為 unsigned short

01 00 00 00:元件數目=12個位元組)

00 00 00 00:資料值=0 '0x00' 表示影象白平衡為:自動白平衡

 

 

專案30

 

04 A4:代表標籤號,對應的標籤名為DigitalZoomRatio

05 00:資料值為5,代表資料格式為unsigned rational

01 00 00 00:元件數目=18個位元組)

FF 0A 00 00:資料偏移量(地址0AFF

 

Rational為有理數型別,計算結果用分子分母表示,同時,將黃框內資料按每四個位元組進行翻轉計算,前四位作為分子,後四位作為分母,最終結果=0

 

 

 

專案31

 

05 A4:代表標籤號,對應的標籤名為FocalLengthIn35mmFilm

03 00:資料值為3,代表資料格式為unsigned short

01 00 00 00:元件數目=12個位元組)

18 00 00 00:資料值=24

 

 

 

 

 

專案32

 

06 A4:代表標籤號,對應的標籤名為SceneCaptureType

03 00:資料值為3,代表資料格式為unsigned short

01 00 00 00:元件數目=12個位元組)

00 00 00 00:資料值=0 '0x00' 表示影象場景拍攝型別為:標準

 

專案33

 

07 A4:代表標籤號,對應的標籤名為GainControl

03 00:資料值為3,代表資料格式為 unsigned short

01 00 00 00:元件數目=12個位元組)

00 00 00 00:資料值=0 '0x00' 表示影象沒有增益控制

 

 

專案34

 

08 A4:代表標籤號,對應的標籤名為Contrast

03 00:資料值為3,代表資料格式為unsigned short

01 00 00 00:元件數目=12個位元組)

00 00 00 00:資料值=0 '0x00' 表示影象對比度“正常”

 

 

 

 

 

 

 

 

專案35

 

09 A4:代表標籤號,對應的標籤名為Saturation

03 00:資料值為3,代表資料格式為 unsigned short

01 00 00 00:元件數目=12個位元組)

00 00 00 00:資料值=0 '0x00' 表示影象飽和度“正常”

 

 

 

 

專案36

 

0A A4:代表標籤號,對應的標籤名為Sharpness

03 00:資料值為3,代表資料格式為 unsigned short

01 00 00 00:元件數目=12個位元組)

00 00 00 00:資料值=0 '0x00' 表示影象銳度“正常”

 

 

 

 

專案37

 

0C A4:代表標籤號,對應的標籤名為SubjectDistanceRange

03 00:資料值為3,代表資料格式為unsigned short

01 00 00 00:元件數目=12個位元組)

00 00 00 00:資料值=0 '0x00' 表示影象主體距離範圍“未知”

 

 

 

專案38

 

31 A4:代表標籤號,對應的標籤名為BodySerialNumber

02 00:資料值為2,代表資料格式為 ascii strings

30 00 00 00:元件數目=4848個位元組)

07 0B 00 00:資料偏移量(地址0B07

 

紅框位置為起始地址,偏移12個位元組,黃框之內的為資料內容(48個位元組,‘00’代表空格),驗證如下圖:

 

 

 

 

 

 

 

 

 

 

 

可交換資訊

 

藍框內資料可劃分為兩部分,前四個位元組為第一部分,後兩個位元組為第二部分:

00 00 00 00

02 00:目錄項的數目=2

 

(注意:此部分的資料值為正向讀值,原因????)

專案0

 

01 00:代表標籤號,對應的標籤名為InteroperabilityIndex

02 00:資料值為2,代表資料格式為 ascii string

04 00 00 00:元件數目=44個位元組)

52 39 38 00H52393800=ascii stringR98

 

 

 

專案1

 

02 00:代表標籤號,對應的標籤名為InteroperabilityVersion

07 00:資料值為7,代表資料格式為Undefined

04 00 00 00:元件數目=44個位元組)

30 31 30 30H30313030=0100

 

 

 

 

 

 

 

 

 

 

GPS資訊

 

藍框內資料可劃分為兩部分,前四個位元組為第一部分,後兩個位元組為第二部分:

00 00 00 00

07 00:目錄項數目=7

 

 

(注意:此部分的資料值為正向讀值,原因????)

 

專案0

 

00 00:代表標籤號,對應的標籤名為GPSVersionID

01 00:資料值為1,代表資料格式為unsigned byte

04 00 00 00:元件數目=44個位元組)

02 03 00 00H02=2H03=3,表示GPS版本為Ver.2.3

 

 

專案1

 

01 00:代表標籤號,對應的標籤名為GPSLatitudeRef

02 00:資料值為2,代表資料格式為ascii strings

02 00 00 00:元件數目=22個位元組)

4E 00 30 73H4E003073=ascii stringsN0s

 

 

專案2

 

02 00:代表標籤號,對應的標籤名為GPSLatitude

05 00:資料值為5,代表資料格式為unsigned rational

03 00 00 00:元件數目=324個位元組)

37 0B 00 00:位元組數大於4個位元組,該處資料代表資料的偏移量,地址為0B37

 

紅框起始位置為地址的起始位置,紅框內12個位元組為偏移量,黃框內為資料內容。

 

Rational為有理數型別,計算結果用分子分母表示,將黃框內資料(24個位元組)按每八個位元組為一組,分為三個部分,對於每一部分按每四個位元組進行翻轉計算,前四位作為分子,後四位作為分母,計算過程如下:

H00 00 00 18=24H00 00 00 01=1,度=24/1=24

H00 00 00 18=24H00 00 00 01=1,分=24/1=24

H00 03 DC 32=252978H00 00 27 10=10000,秒=252978/10000=25.2978

最終結果=242425.2978

 

 

專案3

 

03 00:代表標籤號,對應的標籤名為GPSLongitudeRef

02 00:資料值為2,代表資料格式為ascii strings

02 00 00 00:元件數目=22個位元組)

45 00 30 73H45003073=ascii stringsE0s

 

 

專案4

 

04 00:代表標籤號,對應的標籤名為GPSLongitude

05 00:資料值為5,代表資料格式為unsigned rational

03 00 00 00:元件數目=324個位元組)

4F 0B 00 00:位元組數大於4個位元組,該處資料代表資料的偏移量,地址為0B4F

 

紅框起始位置為地址的起始位置,紅框內12個位元組為偏移量,黃框內為資料內容。

Rational為有理數型別,計算結果用分子分母表示,將黃框內資料(24個位元組)按每八個位元組為一組,分為三個部分,對於每一部分按每四個位元組進行翻轉計算,前四位作為分子,後四位作為分母,計算過程如下:

H00 00 00 76=118H00 00 00 01=1,度=118/1=118

H00 00 00 00=0H00 00 00 01=1,分=0/1=0

H00 08 F9 96=588182H00 00 27 10=10000,秒=588182/10000=58.8182

最終結果=118058.8182

 

 

專案5

 

05 00:代表標籤號,對應的標籤名為GPSAltitudeRef

01 00:資料值為1,代表資料格式為unsigned byte

01 00 00 00:元件數目=11個位元組)

00 00 00 00:資料值=0,值‘0X00’表示影象的高度參考為海平面

 

 

專案6

 

06 00:代表標籤號,對應的標籤名為GPSAltitude

05 00:資料值為5,代表資料格式為unsigned rational

01 00 00 00:元件數目=18個位元組)

67 0B 00 00:位元組數大於4個位元組,該處資料代表資料的偏移量,地址為(0B67

 

紅框起始位置為地址的起始位置,紅框內12個位元組為偏移量,黃框內為資料內容。

 

Rational為有理數型別,計算結果用分子分母表示,將黃框內資料(8個位元組)按每四個位元組進行翻轉計算,前四位作為分子,後四位作為分母,計算過程如下:

H00 02 85 70=165232H00 00 03 E8=1000

最終結果=165232/1000=165.232

 

 

縮圖資訊(IFD1

 

藍框內資料可劃分為兩部分,前四個位元組為第一部分,後兩個位元組為第二部分:

00 00 00 00

06 00:目錄項數目=6

 

 

專案0

 

03 01:代表標籤號,對應的標籤名為Compression

03 00:資料值為3,代表資料格式為unsigned short

01 00 00 00:元件數目=12個位元組)

06 00 00 00:位元組數小於4個位元組,該處資料代表資料值,且資料值=6,即JPEG壓縮格式

 

 

 

專案1

 

1A 01:代表標籤號,對應的標籤名為XResolution

05 00:資料值為5,代表資料格式為unsigned rational

01 00 00 00:元件數目=18個位元組)

6F 0B 00 00:位元組數大於4個位元組,該處資料代表資料的偏移量,地址為(0B6F

 

紅框起始位置為地址的起始位置,紅框內12個位元組為偏移量,黃框內為資料內容。

 

Rational為有理數型別,計算結果用分子分母表示,將黃框內資料(8個位元組)按每四個位元組進行翻轉計算,前四位作為分子,後四位作為分母,計算過程如下:

H00 00 00 48=72H00 00 00 01=1

最終結果=72/1=72

 

專案2

 

1B 01:代表標籤號,對應的標籤名為YResolution

05 00:資料值為5,代表資料格式為unsigned rational

01 00 00 00:元件數目=18個位元組)

77 0B 00 00:位元組數大於4個位元組,該處資料代表資料的偏移量,地址為(0B77

 

紅框起始位置為地址的起始位置,紅框內12個位元組為偏移量,黃框內為資料內容。

 

Rational為有理數型別,計算結果用分子分母表示,將黃框內資料(8個位元組)按每四個位元組進行翻轉計算,前四位作為分子,後四位作為分母,計算過程如下:

H00 00 00 48=72H00 00 00 01=1

最終結果=72/1=72

 

 

專案3

 

28 01:代表標籤號,對應的標籤名為ResolutionUnit

03 00:資料值為3,代表資料格式為unsigned short

01 00 00 00:元件數目=12個位元組)

02 00 00 00:位元組數小於4個位元組,該處資料代表資料值,資料值=2,即表示“釐米”

 

專案4

 

01 02:代表標籤號,對應的標籤名為JpegIFOffset

04 00:資料值為4,代表資料格式為unsigned long

01 00 00 00:元件數目=14個位元組)

F4 0B 00 00:位元組數等於4個位元組,該處資料代表資料值,H00 00 0B F4=3060,表示到JPEG資料的偏移量為3060

 

 

專案5

 

02 02:代表標籤號,對應的標籤名為JpegIFByteCount

04 00:資料值為4,代表資料格式為unsigned long

01 00 00 00:元件數目=14個位元組)

8D 29 00 00:位元組數等於4個位元組,該處資料代表資料值,H00 00 29 8D=10637,表示JPEG的資料大小為10637

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

DQT段

 

FF D8:檔案頭

FF :段標記

DB:段型別,DB代表定義量化表

00 84:段長度,H84=132位元組,0C04-0C87

00QT=0QT精度=8bit

 

SOF

 

FF:段標記

C0:段型別,C0代表幀開始

00 11:段長度,H11=17位元組,0C8A-0C9A

08:樣本精度=8bit

00 78 00 A0:影象高=120,影象寬=160

03:元件數量=3YCbCr彩色圖

01ID=1,這是亮度Y元件

21:化為二進位制=00010101,表明垂直取樣係數=2,水平取樣係數=1

00:使用QT=0的量化表

02ID=2,這是色度的Cb元件

11:化為二進位制=00010001,表明垂直和水平取樣係數均=1

01:使用QT=1的量化表

03ID=3,這是色度Cr元件

11:化為二進位制=00010001,表明垂直和水平取樣係數均=1

01:使用QT=1的量化表

DHT

 

FF:段標記

C4:段型別,C4代表定義霍夫曼表

01 A2:段長度,H01 A2=418位元組,0C9D-0E3E

00HT=0DC

 

SOS

 

FF: 段標記

DA: 段型別,DA代表掃描行開始

00 0C: 段長度=12位元組

03: 元件數量=3

01 00:元件ID=1Y元件,使用HT表號=0AC

02 11:元件ID=2Cb元件,使用HT表號=1DC

03 11:元件ID=3Cr元件,使用HT表號=1DC

00 3F 00:幾乎每個JPG檔案中這3個位元組的值都相同,但用途不明

0E4D-358A:影象壓縮資料

358B-358CFF D9,檔案尾

 

 

姿態資訊部分:

 

 

FF E1APP1

1F FEH1FFE=8190位元組,358F-558C8190位元組

 

http://ns.adobe.com/xap/1.0/<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>

<x:xmpmeta xmlns:x="adobe:ns:meta/">

 <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">

  <rdf:Description rdf:about="DJI Meta Data"

    xmlns:tiff="http://ns.adobe.com/tiff/1.0/"

    xmlns:exif="http://ns.adobe.com/exif/1.0/"

    xmlns:xmp="http://ns.adobe.com/xap/1.0/"

    xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"

    xmlns:dc="http://purl.org/dc/elements/1.1/"

    xmlns:crs="http://ns.adobe.com/camera-raw-settings/1.0/"

    xmlns:drone-dji="http://www.dji.com/drone-dji/1.0/"

   xmp:ModifyDate="2017-04-07"

   xmp:CreateDate="2017-04-07"

   tiff:Make="DJI"

   tiff:Model="FC6310"

   dc:format="image/jpg"

   drone-dji:AbsoluteAltitude="+165.23"

   drone-dji:RelativeAltitude="+149.10"

   drone-dji:GimbalRollDegree="+0.00"

   drone-dji:GimbalYawDegree="-4.60"

   drone-dji:GimbalPitchDegree="-40.00"

   drone-dji:FlightRollDegree="-0.80"

   drone-dji:FlightYawDegree="-1.10"

   drone-dji:FlightPitchDegree="+6.60"

   drone-dji:CamReverse="0"

   drone-dji:GimbalReverse="0"

   crs:Version="7.0"

   crs:HasSettings="False"

   crs:HasCrop="False"

   crs:AlreadyApplied="False">

  </rdf:Description>

 </rdf:RDF>

</x:xmpmeta>

<?xpacket end="w"?>//末尾

① xmlnsXML Namespaces的縮寫)是一個屬性,是XML標準通用標記語言的子集)名稱空間。作用是賦予名稱空間一個唯一的名稱。

② Rdf:資源描述框架Resource Description Framework),一種用於描述Web資源的標記語言。RDF是一個處理元資料的XML標準通用標記語言的子集)應用,所謂元資料,就是描述資料的資料或者描述資訊的資訊

 

 

需要的姿態資料位於FF E1部分,其中

 

紅色部分:38AF——38D0drone-dji:GimbalRollDegree=”+0.00”

綠色部分:38D5——38F5drone-dji:GimbalYawlDegree=”-4.60”

藍色部分:38FA——391Ddrone-dji:GimbalPitchDegree=”-40.00”

相關的資料內容如下圖: