JPEG影象EXIF資料資訊的解析
剛剛結束本科生活的我,那會還比較頹廢,但是因為讀研,導致寶寶七月初就到了學校,來了以後也不知道該做什麼,就出去浪呀~哈哈,不料來了不久後接到老師的任務,讓寶寶把JPEG影象的EXIF資訊解讀出來,當時內心OS大抵是:什麼?老師說了什麼?當時對於EXIF完全陌生,沒有一點概念,寶寶在百度之後,也是比較蒙圈的,不過還是拖拖拉拉的去整理了一下,能百度到的相關資料比較有限,但還是參考了好多大神的博文,灰常有用,但是有些解讀資料的部分介紹的很簡單,對於初次嘗試解讀資訊的我們來說摸不著頭腦,布吉島怎麼出來的,我自己嘗試過後,大體都解讀出來了,有些問題還沒有完全弄明白是為什麼(加了底紋顏色,請多指教),只是摸到了規律,but還是先貼出來遛遛。。。。。。
恩~EXIF資訊到底是什麼就不介紹了,既然要做這個自然是已經百度過了,有相關概念的,而如何檢視JPEG影象的EXIF資訊,這個嘛,我自己是下載了一個WinHEX,很方便哦。順便安利一個MagicEXIF編輯器,可以清楚地看到你的JPEG影象所包含的所有資訊。既然能檢視EXIF資訊了,那如何將一串串的HEX形式的資訊和了解到的文字性質的屬性對應起來呢?下面我們就開始解讀咯~
FF D8:SOI(Start of image)標記
FF E1:APP1標記
APP1資料
35 89:APP1資料大小
45786966 0000:Exif頭
49492A00 08000000:
0E 00:目錄項的號碼=14
專案0
0E 01:代表標籤號,對應的標籤名為 ImageDescription
02 00:資料值為2,代表資料格式為ascii strings
1B 00 00 00:元件的數目=27(27個位元組)
F4 03 00 00:資料的偏移量 (地址03F4)
紅框開始的位置為起始地址,偏移12個位元組,黃框之內的內容為資料內容,共
專案1
0F 01:代表標籤號,對應的標籤名為 Make
02 00:資料值為2,代表資料格式為ascii string
1E 00 00 00:元件的數目=30(30個位元組)
0F 04 00 00:資料的偏移量(地址040F)
紅框位置為起始地址,偏移12個位元組,黃框之內的為資料內容(30個位元組,‘00’代表空格),驗證如下圖:
專案2
10 01:代表標籤號,對應的標籤名為 Model
02 00:資料值為2,代表資料格式為 ascii string
1E 00 00 00:元件的數目=30(30個位元組)
2D 04 00 00:資料的偏移量(地址042D)
紅框位置為起始位置,偏移12位元組,黃框之內為資料內容(30個位元組,‘00’表示空格),驗證如下圖:
專案3
12 01:代表標籤號,對應的標籤名為 Orientation
03 00:資料值為3,代表資料格式為 unsigned short
01 00 00 00:元件的數目=1(2個位元組)
01 00 00 00:資料值=1 ,見下圖(value=1,上/左)
專案4
1A 01:代表標籤號,對應的標籤名為XResolution
05 00:資料值為5,代表資料格式為 unsigned rational
01 00 00 00:元件的數目=1(8個位元組)
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:元件的數目=1(8個位元組)
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:元件數目=1(2個位元組)
02 00 00 00:資料值=2(英寸),見下圖。
專案7
31 01:代表標籤號,對應的標籤名為Software
02 00:資料值為2,代表資料格式為ascii string
18 00 00 00:元件的數目=24(24個位元組)
5B 04 00 00:資料的偏移量(地址04 5B)
紅框位置為起始地址,偏移12位元組,黃框內為資料內容(24個位元組),驗證如下圖:
專案8
32 01:代表標籤號,對應的標籤名為DateTime
02 00:資料值為2,代表資料格式為 ascii string
14 00 00 00:元件數目=20(20個位元組)
73 04 00 00:資料的偏移量(地址0473)
紅框位置為起始地址,偏移12位元組,黃框內為資料內容(20個位元組),驗證如下圖:
專案9
13 02:代表標籤號,對應的標籤名為YCbCrPositioning
03 00:資料值為3,代表資料格式為 unsigned rational
01 00 00 00:元件數目=1(2個位元組)
01 00 00 00:資料值=1,見下圖,‘1’表示畫素陣列的中心
專案10
69 87:代表標籤號,對應的標籤名為ExifOffset
04 00:資料值為4,代表資料格式為 unsigned long
01 00 00 00:元件數目=1(4個位元組)
B6 00 00 00:資料值=182,Exif子IFD的偏移量
專案11
25 88:代表標籤號,對應的標籤名為GPSInfo (Misc Tags)
04 00:資料值為4,代表資料格式為 unsigned long
01 00 00 00:元件數目=1(4個位元組)
AE 02 00 00:資料值=686(GPS目錄偏移量)
專案12
9C 9C:代表標籤號,對應的標籤名為 備註
01 00:資料值為1,代表資料格式為 unsigned byte
00 01 00 00:元件數目=256(256個位元組)
87 04 00 00:資料的偏移量(地址0487)
紅框位置為起始地址,偏移12位元組,黃框內為資料內容(256個位元組),驗證如下圖:
專案13
9E 9C:代表標籤號,對應的標籤名為 關鍵詞
01 00:資料值為1,代表資料格式為 unsigned byte
00 01 00 00:元件數目=256(256個位元組)
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:元件數目=1(8個位元組)
87 06 00 00:資料偏移量(地址0687),有理數翻轉?如下圖所示:
Rational為有理數型別,計算結果用分子分母表示,同時,將黃框內資料按每四個位元組進行翻轉計算,前四位作為分子,H(000007D0)=2000,後四位作為分母,H(000F4240)=1000000,最終結果:2000/1000000=1/500(預設單位)。
專案1
9D 82:代表標籤號,對應的標籤名為FNumber
05 00:資料值為5,代表資料格式為unsigned rational
01 00 00 00:元件的數目=1(8個位元組)
8F 06 00 00:資料的偏移量(地址068F)
Rational為有理數型別,計算結果用分子分母表示,同時,將黃框內資料按每四個位元組進行翻轉計算,前四位作為分子,H(00000230)=560,後四位作為分母,H(00000064)=100,最終結果=560/100=5.6
專案2
22 88:代表標籤號,對應的標籤名為ExposureProgram
03 00:資料值為3,代表資料格式為unsigned short
01 00 00 00:元件的數目=1(2個位元組)
02 00 00 00:資料值=2,‘2’表示正常程式曝光
專案3
27 88:代表標籤號,對應的標籤名為ISOSpeedRatings
03 00:資料值為3,代表資料格式為unsigned short
01 00 00 00:元件的數目=1(2個位元組)
64 00 00 00:資料值=100,十六進位制(64)=十進位制(100)
專案4
00 90:代表標籤號,對應的標籤名為ExifVersion
07 00:資料值為7,代表資料格式為undefined
04 00 00 00:元件數目=4(4個位元組)
30 32 33 30:資料值=0230,表明Exif版本是2.3的,相關解釋如下圖:
專案5
03 09:代表標籤號,對應的標籤名為DateTimeOriginal
02 00:資料值為2,代表資料格式為ascii strings
14 00 00 00:元件數目=20(20個位元組)
97 06 00 00:資料的偏移量(地址0697)
紅框位置為起始地址,偏移12位元組,黃框內為資料內容(20個位元組),驗證如下圖:
專案6
04 90:代表標籤號,對應的標籤名為DateTimeDigitized
02 00:資料值為2,代表資料格式為ascii strings
14 00 00 00:元件數目=20(20個位元組)
AB 06 00 00:資料的偏移量(地址06AB)
紅框位置為起始地址,偏移12位元組,黃框內為資料內容(20個位元組),驗證如下圖:
專案7
01 91:代表標籤號,對應的標籤名為ComponentsConfiguration
07 00:資料值為7,代表資料格式為undefined
04 00 00 00:元件數目=4(4個位元組)
00 03 02 01:資料值,01,02,03,見下圖:
專案8
02 91:代表標籤號,對應的標籤名為CompressedBitsPerPixel
05 00:資料值為5,代表資料格式為unsigned rational
01 00 00 00:元件數目=1(8個位元組)
BF 06 00 00:資料的偏移量(地址06BF)
紅框位置為起始地址,偏移12位元組,黃框內為資料內容(8個位元組),驗證如下:
Rational為有理數型別,計算結果用分子分母表示,同時,將黃框內資料按每四個位元組進行翻轉計算,前四位作為分子,H(0083ADE2)=8629730,後四位作為分母,H(00261300)=2495232,最終結果=8329730/2495232=3.458488
專案9
01 92:代表標籤號,對應的標籤名為ShutterSpeedValue(JPEG (粗略的估計)的平均壓縮率)
0A 00:資料值為10,代表資料格式為signed rational
01 00 00 00:元件數目=1(8個位元組)
C7 06 00 00:資料的偏移量(地址06C7)
Rational為有理數型別,計算結果用分子分母表示,同時,將黃框內資料按每四個位元組進行翻轉計算,前四位作為分子,H(FFFFDCFB)=4294958331,後四位作為分母,H(FFFFFC18)=4294966296,最終結果為10.8????? 此處結果有疑問
專案10
02 92:代表標籤號,對應的標籤名為ApertureValue
05 00:資料值為5,代表資料格式為unsigned rational
01 00 00 00:元件數目=1(8個位元組)
CF 06 00 00:資料的偏移量(地址06CF)
Rational為有理數型別,計算結果用分子分母表示,同時,將黃框內資料按每四個位元組進行翻轉計算,前四位作為分子,H(000001F1)=497,後四位作為分母,H(00000064)=100,最終結果=497/100=4.97
專案11
04 92:代表標籤號,對應的標籤名為ExposureBiasValue
0A 00:資料值為10,代表資料格式為signed rational
01 00 00 00:元件數目=1(8個位元組)
D7 06 00 00:資料的偏移量(地址06D7)
Rational為有理數型別,計算結果用分子分母表示,同時,將黃框內資料按每四個位元組進行翻轉計算,前四位作為分子,H(00000000)=0,後四位作為分母,H(00000020)=32,最終結果=0/32=0
專案12
05 92:代表標籤號,對應的標籤名為MaxApertureValue
05 00:資料值為5,代表資料格式為unsigned rational
01 00 00 00:元件數目=1(8個位元組)
DF 06 00 00:資料的偏移量(地址06DF)
Rational為有理數型別,計算結果用分子分母表示,同時,將黃框內資料按每四個位元組進行翻轉計算,前四位作為分子,H(00000129)=297,後四位作為分母,H(00000064)=100,最終結果=297/100=2.97
專案13
06 92:代表標籤號,對應的標籤名為SubjectDistance
05 00:資料值為5,代表資料格式為unsigned rational
01 00 00 00:元件數目=1(8個位元組)
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:元件數目=1(2個位元組)
02 00 00 00:資料值=2,‘2’為中央重點測光
專案15
08 92:代表標籤號,對應的標籤名為LightSource
03 00:資料值為3,代表資料格式為unsigned short
01 00 00 00:元件數目=1(2個位元組)
00 00 00 00:資料值=0,‘0’意味著未知。
專案16
09 92:代表標籤號,對應的標籤名為Flash
03 00:資料值為3,代表資料格式為unsigned short
01 00 00 00:元件數目=1(2個位元組)
20 00 00 00:資料值=32
專案17
0A 92:代表標籤號,對應的標籤名為FocalLength
05 00:資料值為5,代表資料格式為unsigned rational
01 00 00 00:元件數目=1(8個位元組)
EF 06 00 00:資料的偏移量(地址06EF)
Rational為有理數型別,計算結果用分子分母表示,同時,將黃框內資料按每四個位元組進行翻轉計算,前四位作為分子,H(00000370)=880,後四位作為分母,H(00000064)=100,最終結果=880/100=8.8
專案18
7C 92:代表標籤號,對應的標籤名為MakerNote
07 00:資料值為7,代表資料格式為 undefined
00 04 00 00:元件數目=1024(1024個位元組)
F7 06 00 00:資料偏移量(地址06F7)
專案19
00 A0:代表標籤號,對應的標籤名為FlashPixVersion
07 00:資料值為7,代表資料格式為 undefined
04 00 00 00:元件數目=4(4個位元組)
30 30 31 30:資料值=0100,H(30313030)=string(0100), 如果影象資料是基於 FlashPix formar Ver.1.0, 則這個值為 "0100".
專案20
01 A0:代表標籤號,對應的標籤名為ColorSpace
03 00:資料值為3,代表資料格式為unsigned short
01 00 00 00:元件數目=1(2個位元組)
01 00 00 00:資料值=1,‘1’表示影象使用sRGB色彩空間
專案21
02 A0:代表標籤號,對應的標籤名為ExifImageWidth
04 00:資料值為4,代表資料格式為 unsigned long
01 00 00 00:元件數目=1(4個位元組)
60 15 00 00:資料值=5472,十六進位制(00001560)=十進位制(5472)。
專案22
03 A0:代表標籤號,對應的標籤名為ExifImageHeight
04 00:資料值為4,代表資料格式為 unsigned long
01 00 00 00:元件數目=1(4個位元組)
40 0E 00 00:資料值=3648,十六進位制(00000E40)=十進位制(3648)。
專案23
05 A0:代表標籤號,對應的標籤名為ExifInteroperabilityOffset
04 00:資料值為4,代表資料格式為 unsigned long
01 00 00 00:元件數目=1(4個位元組)
90 02 00 00:資料值=656,十六進位制(00000290)=十進位制(656)。
專案24
15 A2:代表標籤號,對應的標籤名為ExposureIndex
05 00:資料值為5,代表資料格式為 unsigned rational
01 00 00 00:元件數目=1(8個位元組)
F7 0A 00 00:資料偏移量(地址0AF7)
Rational為有理數型別,計算結果用分子分母表示,同時,將黃框內資料按每四個位元組進行翻轉計算,前四位作為分子,後四位作為分母,最終結果=0
專案25
00 A3:代表標籤號,對應的標籤名為FileSource
07 00:資料值為7,代表資料格式為 undefined
01 00 00 00:元件數目=1(1個位元組)
03 00 00 00:資料值=3,值 '0x03' 表示影象源是數字定格相機。
專案26
01 A3:代表標籤號,對應的標籤名為SceneType
07 00:資料值為7,代表資料格式為 undefined
01 00 00 00:元件數目=1(1個位元組)
01 00 00 00:資料值=1,值 '0x01' 表示影象是通過相機直接拍攝出來的。
專案27
01 A4:代表標籤號,對應的標籤名為CustomRendered
03 00:資料值為3,代表資料格式為 unsigned short
01 00 00 00:元件數目=1(2個位元組)
00 00 00 00:資料值=0,值 '0x00' 表示影象未啟用自定義處理。
專案28
02 A4:代表標籤號,對應的標籤名為ExposureMode
03 00:資料值為3,代表資料格式為unsigned short
01 00 00 00:元件數目=1(2個位元組)
00 00 00 00:資料值=0,值 '0x00' 表示影象曝光模式為:自動曝光
專案29
03 A4:代表標籤號,對應的標籤名為WhiteBalance
03 00:資料值為3,代表資料格式為 unsigned short
01 00 00 00:元件數目=1(2個位元組)
00 00 00 00:資料值=0,值 '0x00' 表示影象白平衡為:自動白平衡
專案30
04 A4:代表標籤號,對應的標籤名為DigitalZoomRatio
05 00:資料值為5,代表資料格式為unsigned rational
01 00 00 00:元件數目=1(8個位元組)
FF 0A 00 00:資料偏移量(地址0AFF)
Rational為有理數型別,計算結果用分子分母表示,同時,將黃框內資料按每四個位元組進行翻轉計算,前四位作為分子,後四位作為分母,最終結果=0
專案31
05 A4:代表標籤號,對應的標籤名為FocalLengthIn35mmFilm
03 00:資料值為3,代表資料格式為unsigned short
01 00 00 00:元件數目=1(2個位元組)
18 00 00 00:資料值=24
專案32
06 A4:代表標籤號,對應的標籤名為SceneCaptureType
03 00:資料值為3,代表資料格式為unsigned short
01 00 00 00:元件數目=1(2個位元組)
00 00 00 00:資料值=0,值 '0x00' 表示影象場景拍攝型別為:標準
專案33
07 A4:代表標籤號,對應的標籤名為GainControl
03 00:資料值為3,代表資料格式為 unsigned short
01 00 00 00:元件數目=1(2個位元組)
00 00 00 00:資料值=0,值 '0x00' 表示影象沒有增益控制
專案34
08 A4:代表標籤號,對應的標籤名為Contrast
03 00:資料值為3,代表資料格式為unsigned short
01 00 00 00:元件數目=1(2個位元組)
00 00 00 00:資料值=0,值 '0x00' 表示影象對比度“正常”
專案35
09 A4:代表標籤號,對應的標籤名為Saturation
03 00:資料值為3,代表資料格式為 unsigned short
01 00 00 00:元件數目=1(2個位元組)
00 00 00 00:資料值=0,值 '0x00' 表示影象飽和度“正常”
專案36
0A A4:代表標籤號,對應的標籤名為Sharpness
03 00:資料值為3,代表資料格式為 unsigned short
01 00 00 00:元件數目=1(2個位元組)
00 00 00 00:資料值=0,值 '0x00' 表示影象銳度“正常”
專案37
0C A4:代表標籤號,對應的標籤名為SubjectDistanceRange
03 00:資料值為3,代表資料格式為unsigned short
01 00 00 00:元件數目=1(2個位元組)
00 00 00 00:資料值=0,值 '0x00' 表示影象主體距離範圍“未知”
專案38
31 A4:代表標籤號,對應的標籤名為BodySerialNumber
02 00:資料值為2,代表資料格式為 ascii strings
30 00 00 00:元件數目=48(48個位元組)
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:元件數目=4(4個位元組)
52 39 38 00:H(52393800)=ascii string(R98)
專案1
02 00:代表標籤號,對應的標籤名為InteroperabilityVersion
07 00:資料值為7,代表資料格式為Undefined
04 00 00 00:元件數目=4(4個位元組)
30 31 30 30:H(30313030)=0100
GPS資訊
藍框內資料可劃分為兩部分,前四個位元組為第一部分,後兩個位元組為第二部分:
00 00 00 00:
07 00:目錄項數目=7
(注意:此部分的資料值為正向讀值,原因????)
專案0
00 00:代表標籤號,對應的標籤名為GPSVersionID
01 00:資料值為1,代表資料格式為unsigned byte
04 00 00 00:元件數目=4(4個位元組)
02 03 00 00:H(02)=2,H(03)=3,表示GPS版本為Ver.2.3
專案1
01 00:代表標籤號,對應的標籤名為GPSLatitudeRef
02 00:資料值為2,代表資料格式為ascii strings
02 00 00 00:元件數目=2(2個位元組)
4E 00 30 73:H(4E003073)=ascii strings(N0s)
專案2
02 00:代表標籤號,對應的標籤名為GPSLatitude
05 00:資料值為5,代表資料格式為unsigned rational
03 00 00 00:元件數目=3(24個位元組)
37 0B 00 00:位元組數大於4個位元組,該處資料代表資料的偏移量,地址為0B37
紅框起始位置為地址的起始位置,紅框內12個位元組為偏移量,黃框內為資料內容。
Rational為有理數型別,計算結果用分子分母表示,將黃框內資料(24個位元組)按每八個位元組為一組,分為三個部分,對於每一部分按每四個位元組進行翻轉計算,前四位作為分子,後四位作為分母,計算過程如下:
H(00 00 00 18)=24,H(00 00 00 01)=1,度=24/1=24;
H(00 00 00 18)=24,H(00 00 00 01)=1,分=24/1=24;
H(00 03 DC 32)=252978,H(00 00 27 10)=10000,秒=252978/10000=25.2978;
最終結果=24度24分25.2978秒
專案3
03 00:代表標籤號,對應的標籤名為GPSLongitudeRef
02 00:資料值為2,代表資料格式為ascii strings
02 00 00 00:元件數目=2(2個位元組)
45 00 30 73:H(45003073)=ascii strings(E0s)
專案4
04 00:代表標籤號,對應的標籤名為GPSLongitude
05 00:資料值為5,代表資料格式為unsigned rational
03 00 00 00:元件數目=3(24個位元組)
4F 0B 00 00:位元組數大於4個位元組,該處資料代表資料的偏移量,地址為0B4F
紅框起始位置為地址的起始位置,紅框內12個位元組為偏移量,黃框內為資料內容。
Rational為有理數型別,計算結果用分子分母表示,將黃框內資料(24個位元組)按每八個位元組為一組,分為三個部分,對於每一部分按每四個位元組進行翻轉計算,前四位作為分子,後四位作為分母,計算過程如下:
H(00 00 00 76)=118,H(00 00 00 01)=1,度=118/1=118;
H(00 00 00 00)=0,H(00 00 00 01)=1,分=0/1=0;
H(00 08 F9 96)=588182,H(00 00 27 10)=10000,秒=588182/10000=58.8182;
最終結果=118度0分58.8182秒
專案5
05 00:代表標籤號,對應的標籤名為GPSAltitudeRef
01 00:資料值為1,代表資料格式為unsigned byte
01 00 00 00:元件數目=1(1個位元組)
00 00 00 00:資料值=0,值‘0X00’表示影象的高度參考為海平面
專案6
06 00:代表標籤號,對應的標籤名為GPSAltitude
05 00:資料值為5,代表資料格式為unsigned rational
01 00 00 00:元件數目=1(8個位元組)
67 0B 00 00:位元組數大於4個位元組,該處資料代表資料的偏移量,地址為(0B67)
紅框起始位置為地址的起始位置,紅框內12個位元組為偏移量,黃框內為資料內容。
Rational為有理數型別,計算結果用分子分母表示,將黃框內資料(8個位元組)按每四個位元組進行翻轉計算,前四位作為分子,後四位作為分母,計算過程如下:
H(00 02 85 70)=165232,H(00 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:元件數目=1(2個位元組)
06 00 00 00:位元組數小於4個位元組,該處資料代表資料值,且資料值=6,即JPEG壓縮格式
專案1
1A 01:代表標籤號,對應的標籤名為XResolution
05 00:資料值為5,代表資料格式為unsigned rational
01 00 00 00:元件數目=1(8個位元組)
6F 0B 00 00:位元組數大於4個位元組,該處資料代表資料的偏移量,地址為(0B6F)
紅框起始位置為地址的起始位置,紅框內12個位元組為偏移量,黃框內為資料內容。
Rational為有理數型別,計算結果用分子分母表示,將黃框內資料(8個位元組)按每四個位元組進行翻轉計算,前四位作為分子,後四位作為分母,計算過程如下:
H(00 00 00 48)=72,H(00 00 00 01)=1;
最終結果=72/1=72
專案2
1B 01:代表標籤號,對應的標籤名為YResolution
05 00:資料值為5,代表資料格式為unsigned rational
01 00 00 00:元件數目=1(8個位元組)
77 0B 00 00:位元組數大於4個位元組,該處資料代表資料的偏移量,地址為(0B77)
紅框起始位置為地址的起始位置,紅框內12個位元組為偏移量,黃框內為資料內容。
Rational為有理數型別,計算結果用分子分母表示,將黃框內資料(8個位元組)按每四個位元組進行翻轉計算,前四位作為分子,後四位作為分母,計算過程如下:
H(00 00 00 48)=72,H(00 00 00 01)=1;
最終結果=72/1=72
專案3
28 01:代表標籤號,對應的標籤名為ResolutionUnit
03 00:資料值為3,代表資料格式為unsigned short
01 00 00 00:元件數目=1(2個位元組)
02 00 00 00:位元組數小於4個位元組,該處資料代表資料值,資料值=2,即表示“釐米”
專案4
01 02:代表標籤號,對應的標籤名為JpegIFOffset
04 00:資料值為4,代表資料格式為unsigned long
01 00 00 00:元件數目=1(4個位元組)
F4 0B 00 00:位元組數等於4個位元組,該處資料代表資料值,H(00 00 0B F4)=3060,表示到JPEG資料的偏移量為3060
專案5
02 02:代表標籤號,對應的標籤名為JpegIFByteCount
04 00:資料值為4,代表資料格式為unsigned long
01 00 00 00:元件數目=1(4個位元組)
8D 29 00 00:位元組數等於4個位元組,該處資料代表資料值,H(00 00 29 8D)=10637,表示JPEG的資料大小為10637
DQT段
FF D8:檔案頭
FF :段標記
DB:段型別,DB代表定義量化表
00 84:段長度,H(84)=132位元組,0C04-0C87
00:QT號=0,QT精度=8bit
SOF段
FF:段標記
C0:段型別,C0代表幀開始
00 11:段長度,H(11)=17位元組,0C8A-0C9A
08:樣本精度=8bit
00 78 00 A0:影象高=120,影象寬=160
03:元件數量=3,YCbCr彩色圖
01:ID號=1,這是亮度Y元件
21:化為二進位制=00010101,表明垂直取樣係數=2,水平取樣係數=1
00:使用QT號=0的量化表
02:ID號=2,這是色度的Cb元件
11:化為二進位制=00010001,表明垂直和水平取樣係數均=1
01:使用QT號=1的量化表
03:ID號=3,這是色度Cr元件
11:化為二進位制=00010001,表明垂直和水平取樣係數均=1
01:使用QT號=1的量化表
DHT段
FF:段標記
C4:段型別,C4代表定義霍夫曼表
01 A2:段長度,H(01 A2)=418位元組,0C9D-0E3E
00:HT號=0,DC表
SOS段
FF: 段標記
DA: 段型別,DA代表掃描行開始
00 0C: 段長度=12位元組
03: 元件數量=3
01 00:元件ID=1,Y元件,使用HT表號=0的AC表
02 11:元件ID=2,Cb元件,使用HT表號=1的DC表
03 11:元件ID=3,Cr元件,使用HT表號=1的DC表
00 3F 00:幾乎每個JPG檔案中這3個位元組的值都相同,但用途不明
0E4D-358A:影象壓縮資料
358B-358C:FF D9,檔案尾
姿態資訊部分:
FF E1:APP1
1F FE:H(1FFE)=8190位元組,358F-558C為8190位元組
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"?>//末尾
① xmlns(XML Namespaces的縮寫)是一個屬性,是XML(標準通用標記語言的子集)名稱空間。作用是賦予名稱空間一個唯一的名稱。
② Rdf:資源描述框架(Resource Description Framework),一種用於描述Web資源的標記語言。RDF是一個處理元資料的XML(標準通用標記語言的子集)應用,所謂元資料,就是“描述資料的資料”或者“描述資訊的資訊”。
需要的姿態資料位於FF E1部分,其中
紅色部分:38AF——38D0:drone-dji:GimbalRollDegree=”+0.00”
綠色部分:38D5——38F5:drone-dji:GimbalYawlDegree=”-4.60”
藍色部分:38FA——391D:drone-dji:GimbalPitchDegree=”-40.00”
相關的資料內容如下圖: