?? jpeg數(shù)據(jù)分析例子.txt
字號(hào):
搞了幾年的技術(shù)
發(fā)現(xiàn)最大的錯(cuò)誤就是不愿意把自己學(xué)到的東西分享出來。
如果您覺得這個(gè)幫到您了,就多到我網(wǎng)站上幫需要幫忙的人
順便幫我把網(wǎng)站上的廣告點(diǎn)一下,這樣我的網(wǎng)站就能開得更久了
JPEG數(shù)據(jù)分析例子
- 段的類型:
- ~~~~~~~~~
- *TEM = $01 可以忽略掉
- SOF0 = $c0 幀開始 (baseline JPEG), 細(xì)節(jié)附后
- SOF1 = $c1 dito
- SOF2 = $c2 通常不支持
- SOF3 = $c3 通常不支持
- SOF5 = $c5 通常不支持
- SOF6 = $c6 通常不支持
- SOF7 = $c7 通常不支持
- SOF9 = $c9 arithmetic 編碼(Huffman 的一種擴(kuò)展算法), 通常不支持
- SOF10 = $ca 通常不支持
- SOF11 = $cb 通常不支持
- SOF13 = $cd 通常不支持
- SOF14 = $ce 通常不支持
- SOF14 = $ce 通常不支持
- SOF15 = $cf 通常不支持
- DHT = $c4 定義 Huffman Table, 細(xì)節(jié)附后
- JPG = $c8 未定義/保留 (引起解碼錯(cuò)誤)
- DAC = $cc 定義 Arithmetic Table, 通常不支持
- *RST0 = $d0 RSTn 用于 resync, 通常被忽略
- *RST1 = $d1
- *RST2 = $d2
- *RST3 = $d3
- *RST4 = $d4
- *RST5 = $d5
- *RST6 = $d6
- *RST7 = $d7
-
- SOI = $d8 圖片開始
- EOI = $d9 圖片結(jié)束
- SOS = $da 掃描行開始, 細(xì)節(jié)附后
- DQT = $db 定義 Quantization Table, 細(xì)節(jié)附后
- DNL = $dc 通常不支持, 忽略
- DRI = $dd 定義重新開始間隔, 細(xì)節(jié)附后
- DHP = $de 忽略 (跳過)
- EXP = $df 忽略 (跳過)
-
- APP0 = $e0 JFIF APP0 segment marker (細(xì)節(jié)略)
- APP15 = $ef 忽略
- JPG0 = $f0 忽略 (跳過)
- JPG13 = $fd 忽略 (跳過)
- COM = $fe 注釋, 細(xì)節(jié)附后
- 其它的段類型都保留必須跳過
- SOF0: Start Of Frame 0:
注意:
0xFF后跟大于0x00的值,是一個(gè)段的開始
0xFF后跟等于0x00的值,是數(shù)據(jù),應(yīng)該去掉0x00 如 0xFF 0x00 === 0xFF
注釋是從數(shù)據(jù)行后開始到下一行數(shù)據(jù)的上一行為一塊注釋
/////////////////////////////////////////////////////////////////////////////////////////////
unsigned char Jpeg_File_data[60693] = {
0xFF, 0xD8, // 文件頭 (2 bytes): $ff, $d8 (SOI) (JPEG 文件標(biāo)識(shí)) 圖片開始
------------------------------------------------------------------------------------------------------------------
0xFF, 0xE0, // E0類型,APP0 = $e0 JFIF APP0 segment marker (細(xì)節(jié)略)
0x00, 0x10, // 該段長度為0x0010,包括長度這兩個(gè)byte
0x4A, 0x46, 0x49, 0x46, 0x00, //JFIF.
0x01, 0x01, 0x00, 0x00, 0x01,
0x00, 0x01, 0x00, 0x00,
------------------------------------------------------------------------------------------------------------------ 0xFF, 0xDB, // DQT = $db 定義 Quantization Table, 細(xì)節(jié)附后 $ff, $db (DQT)
0x00, 0x43, // 長度 (高字節(jié), 低字節(jié))
0x00, // QT 信息 (1 byte) -bit 0..3: QT 號(hào)(0..3, 否則錯(cuò)誤) -bit 4..7: QT 精度, 0 = 8 bit, 否則 16 bit
// n 字節(jié)的 QT, n = 64*(精度+1)
// 備注:
// 一個(gè)單獨(dú)的 DQT 段可以包含多個(gè) QT, 每個(gè)都有自己的信息字節(jié)
// 當(dāng)精度=1 (16 bit), 每個(gè)字都是高位在前低位在后
0x08, 0x06, 0x06, 0x07, 0x06, 0x05, 0x08, 0x07, 0x07, 0x07, 0x09, 0x09, 0x08, 0x0A, 0x0C, 0x14,
0x0D, 0x0C, 0x0B, 0x0B, 0x0C, 0x19, 0x12, 0x13, 0x0F, 0x14, 0x1D, 0x1A, 0x1F, 0x1E, 0x1D, 0x1A,
0x1C, 0x1C, 0x20, 0x24, 0x2E, 0x27, 0x20, 0x22, 0x2C, 0x23, 0x1C, 0x1C, 0x28, 0x37, 0x29, 0x2C,
0x30, 0x31, 0x34, 0x34, 0x34, 0x1F, 0x27, 0x39, 0x3D, 0x38, 0x32, 0x3C, 0x2E, 0x33, 0x34, 0x32, 0xFF, 0xDB, // DQT = $db 定義 Quantization Table, 細(xì)節(jié)附后
0x00, 0x43,
0x01,
0x09, 0x09,0x09, 0x0C, 0x0B, 0x0C, 0x18, 0x0D, 0x0D, 0x18, 0x32, 0x21, 0x1C, 0x21, 0x32, 0x32,
0x32, 0x32,0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32,
0x32, 0x32,0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32,
0x32, 0x32,0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32,
------------------------------------------------------------------------------------------------------------------ 0xFF, 0xC0, // SOF0 = $c0 幀開始 (baseline JPEG), 細(xì)節(jié)附后 itu-t81.pdf第 38/186 頁
0x00, 0x11, // 長度 (高字節(jié), 低字節(jié)), 8+components*3
0x08, // 數(shù)據(jù)精度 (1 byte) 每個(gè)樣本位數(shù), 通常是 8 (大多數(shù)軟件不支持 12 和 16)
0x02, 0xA2, // 圖片高度 (高字節(jié), 低字節(jié)), 如果不支持 DNL 就必須 >0
0x02, 0x9B, // 圖片寬度 (高字節(jié), 低字節(jié)), 如果不支持 DNL 就必須 >0
0x03, // components 數(shù)量(1 byte), 灰度圖是 1, YCbCr/YIQ 彩色圖是 3, CMYK 彩色圖是 4
0x01,0x22, 0x00, // 每個(gè) component: 3 bytes
0x02, // component id (1 = Y, 2 = Cb, 3 = Cr, 4 = I, 5 = Q)
0x11, // 采樣系數(shù) (bit 0-3 vert., 4-7 hor.)
0x01, // quantization table 號(hào)
0x03, 0x11,0x01, ------------------------------------------------------------------------------------------------------------------ 0xFF, 0xC4, // DHT = $c4 定義 Huffman Table, 細(xì)節(jié)附后
0x00, 0x1F, // 長度 (高字節(jié), 低字節(jié))
0x00, // HT信息 (1 byte) -bit0..3:HT號(hào)(0..3,否則錯(cuò)誤) -bit4:HT類型,0=DC table,1=AC table -bit5..7:必須是0
0x00, 0x01, 0x05, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //16 bytes: 長度是 1..16 代碼的符號(hào)數(shù). 這 16 個(gè)數(shù)的和應(yīng)該 <=256
//第 i 字節(jié)表示了 i 位長的 Huffman 代碼的個(gè)數(shù) (i= 1 到 16),這表的長度 (字節(jié)數(shù)) = 這 16 個(gè)數(shù)字之和
//對(duì)應(yīng)字節(jié)就是對(duì)應(yīng) Haffman 代碼等價(jià)數(shù)字
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09,0x0A, 0x0B, //n bytes:一個(gè)包含了按遞增次序代碼長度排列的符號(hào)表 -(n=代碼總數(shù))
// 備注:
// 一個(gè)單獨(dú)的 DHT 段可以包含多個(gè) HT, 每個(gè)都有自己的信息字節(jié)
0xFF, 0xC4, // DHT = $c4 定義 Huffman Table, 細(xì)節(jié)附后
0x00, 0xB5,
0x10,
0x00, 0x02, 0x01, 0x03, 0x03, 0x02, 0x04, 0x03, 0x05, 0x05, 0x04, 0x04, 0x00, 0x00, 0x01, 0x7D,
0x01, 0x02, 0x03, 0x00, 0x04, 0x11, 0x05, 0x12, 0x21, 0x31, 0x41, 0x06, 0x13, 0x51, 0x61, 0x07,
0x22, 0x71, 0x14, 0x32, 0x81, 0x91, 0xA1, 0x08, 0x23, 0x42, 0xB1, 0xC1, 0x15, 0x52, 0xD1, 0xF0,
0x24, 0x33, 0x62, 0x72, 0x82, 0x09, 0x0A, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x25, 0x26, 0x27, 0x28,
0x29, 0x2A, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49,
0x4A, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69,
0x6A, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89,
0x8A, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9A, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7,
0xA8, 0xA9, 0xAA, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, 0xB8, 0xB9, 0xBA, 0xC2, 0xC3, 0xC4, 0xC5,
0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xDA, 0xE1, 0xE2,
0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8,
0xF9, 0xFA, 0xFF, 0xC4, // DHT = $c4 定義 Huffman Table, 細(xì)節(jié)附后
0x00, 0x1F,
0x01,
0x00, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0xFF, 0xC4, // DHT = $c4 定義 Huffman Table, 細(xì)節(jié)附后
0x00, 0xB5,
0x11,
0x00, 0x02, 0x01, 0x02, 0x04, 0x04, 0x03, 0x04, 0x07, 0x05, 0x04, 0x04, 0x00, 0x01, 0x02, 0x77,
0x00, 0x01, 0x02, 0x03, 0x11, 0x04, 0x05, 0x21, 0x31, 0x06, 0x12, 0x41, 0x51, 0x07, 0x61, 0x71,
0x13, 0x22, 0x32, 0x81, 0x08, 0x14, 0x42, 0x91, 0xA1, 0xB1, 0xC1, 0x09, 0x23, 0x33, 0x52, 0xF0,
0x15, 0x62, 0x72, 0xD1, 0x0A, 0x16, 0x24, 0x34, 0xE1, 0x25, 0xF1, 0x17, 0x18, 0x19, 0x1A, 0x26,
0x27, 0x28, 0x29, 0x2A, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48,
0x49, 0x4A, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
0x69, 0x6A, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
0x88, 0x89, 0x8A, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9A, 0xA2, 0xA3, 0xA4, 0xA5,
0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, 0xB8, 0xB9, 0xBA, 0xC2, 0xC3,
0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xDA,
0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8,
0xF9, 0xFA, ------------------------------------------------------------------------------------------------------------------
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -