2020-10-28

jpeg 格式解析

JPEG文件由兩部分組成:標記碼和壓縮數(shù)據(jù)。JPEG圖像所有信息都由標記碼記錄讨永,標記碼之間用若干個0xFF分開滔驶。
JPEG圖片格式組成部分:SOI(文件頭)+APP0(圖像識別信息)+ DQT(定義量化表)+ SOF0(圖像基本信息)+ DHT(定義Huffman表) + DRI(定義重新開始間隔)+ SOS(掃描行開始)+ EOI(文件尾)

jpeg數(shù)據(jù)分析

00000000h: FF D8 FF E0 00 10 4A 46 49 46 00 01 01 00 00 01 ; ??.JFIF......
00000010h: 00 01 00 00 FF E1 18 D6 45 78 69 66 00 00 49 49 ; ....?諩xif..II
00000020h: 2A 00 08 00 00 00 0A 00 0F 01 02 00 10 00 00 00 ; *...............
00000030h: 86 00 00 00 10 01 02 00 0A 00 00 00 96 00 00 00 ; ?..........?..
00000040h: 12 01 03 00 01 00 00 00 01 00 00 00 1A 01 05 00 ; ................
00000050h: 01 00 00 00 A0 00 00 00 1B 01 05 00 01 00 00 00 ; ....?..........
00000060h: A8 00 00 00 28 01 03 00 01 00 00 00 02 00 00 00 ; ?..(...........
00000070h: 31 01 02 00 06 00 00 00 B0 00 00 00 32 01 02 00 ; 1.......?..2...
00000080h: 14 00 00 00 B6 00 00 00 13 02 03 00 01 00 00 00 ; ....?..........
00000090h: 01 00 00 00 69 87 04 00 01 00 00 00 CA 00 00 00 ; ....i?.....?..
000000a0h: E0 06 00 00 46 4C 49 52 20 53 79 73 74 65 6D 73 ; ?..FLIR Systems
000000b0h: 20 41 42 00 46 4C 49 52 20 54 36 33 30 00 48 00 ;  AB.FLIR T630.H.
000000c0h: 00 00 01 00 00 00 48 00 00 00 01 00 00 00 35 2E ; ......H.......5.
000000d0h: 33 2E 33 00 32 30 32 30 3A 30 35 3A 32 35 20 32 ; 3.3.2020:05:25 2
000000e0h: 30 3A 34 35 3A 33 35 00 0E 00 9A 82 05 00 01 00 ; 0:45:35...殏....
000000f0h: 00 00 78 01 00 00 00 90 02 00 04 00 00 00 30 32 ; ..x....?.....02
00000100h: 32 30 03 90 02 00 14 00 00 00 80 01 00 00 04 90 ; 20.?.....€....?
00000110h: 02 00 14 00 00 00 94 01 00 00 01 91 07 00 04 00 ; ......?...?...
00000120h: 00 00 00 03 02 01 06 92 05 00 01 00 00 00 A8 01 ; .......?.....?
00000130h: 00 00 0A 92 05 00 01 00 00 00 B0 01 00 00 7C 92 ; ...?.....?..|?
00000140h: 07 00 FE 04 00 00 B8 01 00 00 00 A0 02 00 04 00 ; ..?..?...?...
00000150h: 00 00 30 31 30 30 01 A0 03 00 01 00 00 00 01 00 ; ..0100.?.......
00000160h: 00 00 02 A0 03 00 01 00 00 00 80 02 00 00 03 A0 ; ...?.....€....?
00000170h: 03 00 01 00 00 00 E0 01 00 00 04 A4 05 00 01 00 ; ......?...?...
00000180h: 00 00 B6 06 00 00 20 A4 02 00 21 00 00 00 BE 06 ; ..?.. ?.!...?
00000190h: 00 00 00 00 00 00 0A 00 00 00 F4 01 00 00 32 30 ; ..........?..20
000001a0h: 32 30 3A 30 35 3A 32 35 20 32 30 3A 34 35 3A 33 ; 20:05:25 20:45:3
000001b0h: 35 00 32 30 32 30 3A 30 35 3A 32 35 20 32 30 3A ; 5.2020:05:25 20:

SOI

SOI 標記碼開頭
FF D8

JFIF應用數(shù)據(jù)塊 APP0

FF E0 ?#開始標記位
00 01 ? #2個字節(jié),app0 的長度
4A 46 49 46 20 ? #5個字節(jié) 格式識別碼:JFIF
01 01 ? #2個字節(jié) 版本號:1.1
00 ? #1個字節(jié) 單位密度
00 01 ? # 2個字節(jié) 水平方向像素密度
00 01 ? # 2個字節(jié) 垂直方向像素密度

標記結構 字節(jié)數(shù) 意義 對應數(shù)據(jù)(十六進制)
0xFF 1個 段標識 FF
0xE0 1個 段類型 E0
Lp 2個 APP0標記碼長度 00 10(由此看出該標記碼長度為16字節(jié))
Identifier 5 個 識別碼 4A 46 49 46 00(“JFIF”)
Version 2個 版本號 01 01
Units 1個 單位密度 00
Xdensity 2個 水平方向像素密度 00 01
Xdensity 2個 垂直方向像素密度 00 01
Xthumbnail 1個 單位密度 00
Ythumbnail 1個 單位密度 00

APP1

Exif使用TIFF格式來存儲數(shù)據(jù)

標記結構 字節(jié)數(shù) 意義 對應數(shù)據(jù)(十六進制)
0xFF 1個 段標識 FF
0xE1 1個 app1 E1
Lp 2個 長度 18 D6 (3685)
Identifier 6個 是否使用了 Exif 45 78 69 66(Exif) 00 00
Identifier 8個 TIFF Header 4949(intel小端模式)2A00 08000000 (IFD 偏移量)
ifd 2個 圖像文件目錄個數(shù) 0A 00

IFD格式 TAG + TYPE + SIZE + VALUE

TYPE 數(shù)據(jù)格式對應的字節(jié)數(shù)如下:

value (TYPE 的值) Format Bytes/component (組成元素的字節(jié)數(shù))
1 unsigned byte 1
2 ascii strings 1
3 unsigned short 2
4 unsigned long 4
5 unsigned rational 8
6 signed byte 1
7 undefined 1
8 signed short 2
9 signed long 4
10 signed rational 8
11 single float 4
12 double float 8

1."rational"表示一個分數(shù)卿闹,它包含兩個signed/unsigned long integer值并且第一個為分子揭糕,第二個為分母萝快。

  1. 組成元素的字節(jié)數(shù) * SIZE >= 4個字節(jié),則VALUE為偏移地址(即 TIFF Header 地址 + value)著角,否則value為tag對應的數(shù)據(jù)揪漩。

1.FD

標記結構 字節(jié)數(shù) 意義 對應數(shù)據(jù)(十六進制)
IFD0 2個 Tag 0F 01 (Make 制造)
IFD0 2個 TYPE 02 00 (ASCII)
IFD0 4個 SIZE 10 00 00 00 ( 16*1 > 4 字節(jié) ,下面四個字節(jié)為偏移量)
IFD0 4個 VALUE 86 00 00 00 (從1e開始計算,偏移0x86個字節(jié) (0x00000086+0x000001e))

tag 的內(nèi)容如下:
000000a4h: 46 4C 49 52 20 53 79 73 74 65 6D 73 20 41 42 00 ; FLIR Systems AB

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末吏口,一起剝皮案震驚了整個濱河市奄容,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌产徊,老刑警劉巖昂勒,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異舟铜,居然都是意外死亡戈盈,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進店門深滚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來奕谭,“玉大人,你說我怎么就攤上這事痴荐⊙” “怎么了?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵生兆,是天一觀的道長难捌。 經(jīng)常有香客問我,道長鸦难,這世上最難降的妖魔是什么根吁? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮合蔽,結果婚禮上击敌,老公的妹妹穿的比我還像新娘。我一直安慰自己拴事,他們只是感情好沃斤,可當我...
    茶點故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著刃宵,像睡著了一般衡瓶。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上牲证,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天哮针,我揣著相機與錄音,去河邊找鬼。 笑死十厢,一個胖子當著我的面吹牛等太,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播寿烟,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼澈驼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了筛武?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤挎塌,失蹤者是張志新(化名)和其女友劉穎徘六,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體榴都,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡待锈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了嘴高。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片竿音。...
    茶點故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖拴驮,靈堂內(nèi)的尸體忽然破棺而出春瞬,到底是詐尸還是另有隱情,我是刑警寧澤套啤,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布宽气,位于F島的核電站,受9級特大地震影響潜沦,放射性物質(zhì)發(fā)生泄漏萄涯。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一唆鸡、第九天 我趴在偏房一處隱蔽的房頂上張望涝影。 院中可真熱鬧,春花似錦争占、人聲如沸燃逻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽唆樊。三九已至,卻和暖如春刻蟹,著一層夾襖步出監(jiān)牢的瞬間逗旁,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留片效,地道東北人红伦。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像淀衣,于是被迫代替她去往敵國和親昙读。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,619評論 2 354