图片数据

解码过程

1.开始标记

FF D8 FF E0 00 10 4A 46 49 46 00 01 01 00 00 01 00 01 00 00

这部分是图片的开始,包含SOI,start of image(FF D8),JFIF,版本号之类的,这部分对后面解压没什么作用,这里不做介绍

2.量化表

地址:0x00000014

数据:FF DB 00 43 00 08 06 06 07 06 05 08 07 07 07 09 09 08 0A 0C 14 0D 0C 0B 0B 0C 19 12 13 0F 14 1D 1A 1F 1E 1D 1A 1C 1C 20 24 2E 27 20 22 2C 23 1C 1C 28 37 29 2C 30 31 34 34 34 1F 27 39 3D 38 32 3C 2E 33 34 32

解析:

(1) FF DB 量化表(QT)的标识

(2)00 43 QT的长度:67

(3)00 QT信息,高4位:0,QT精度为8位,否则16位;

低4位:0,QT号,有两张QT,亮度和色度

(4)64字节数据为8*8的QT内容,从左上角往右下角排列

16进制:

十进制:

图像信息

地址:0x0000009E

数据:FF C0 00 11 08 00 95 00 E3 03 01 22 00 02 11 01 03 11 01

解析:

(1)FF C0 start of frame 0起始标识

(2)00 11 数据长度为17

(3)08 数据精度,表示每个颜色每个像素的位数,通常是8

(4)00 95 图片高度:149

(5)00 E3 图片宽度:227

(6)03 通道数(component),灰度图为1,YCbCr/YIQ彩色图是3,CNWK彩色图是4

(7)01 22 00

02 11 01

03 11 01

(7)是每个通道的参数,这里有3组,每组3个字节:第1个字节01是component ID,第2个字节0-3bit是垂直采样系数,4-7bit是水平采样系数,第3个字节00量化表编号

Haffman表

生成规则:

(a)第一个编码的数字必定为0;如果第一个编码的位数为1,就被编码为0;如果第一个编码的位数为2,就被编码为00;如果第一个编码的位数为3,就被编码为000。

(b)从第二个编码开始,如果它和它前面编码具有相同的位数,则当前编码是它前面的编码加1;如果它的编码位数比它前面的编码位数大,则当前编码时它前面的编码加1之后再在后面添加若干个0,直到满足编码位数的长度为止。

地址:0x000000B1

数据:FF C4 00 1F 00 00 01 05 01 01 01 01 01 01 00 00 00 00 00 00 00 00 01 02 03 04 05 06 07 08 09 0A 0B

解析:

  1. FF C4 Haffman表起始标识
  2. 00 1F 数据长度为31
  3. 00 表示第一个DHT表,类型为DC,ID为0,低4位是 HT ID 号,第5位是 HT 表类型标记,再高三位是为0
  4. 后面的16个字节数据表示每个编码组中有几个代码,然后是对应保存的值

组号

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

个数

00

01

05

01

01

01

01

01

01

00

00

00

00

00

00

00

即Haffman表为:

序号

码字长度

码字(二进制)

权值(数据位数)

0

2

00

0

1

3

010

1

2

3

011

2

3

3

100

3

4

3

101

4

5

3

110

5

6

4

1110

6

7

5

11110

7

8

6

111110

8

9

7

1111110

9

10

8

11111110

10

11

9

111111110

11

地址:0x000000D2

数据:FF C4 00 B5 10 00 02 01 03 03 02 04 03 05 05 04 04 00 00 01 7D 01 02 03 00 04 11 05 12 21 31 41 06 13 51 61 07 22 71 14 32 81 91 A1 08 23 42 B1 C1 15 52 D1 F0 24 33 62 72 82 09 0A 16 17 18 19 1A 25 26 27 28 29 2A 34 35 36 37 38 39 3A 43 44 45 46 47 48 49 4A 53 54 55 56 57 58 59 5A 63 64 65 66 67 68 69 6A 73 74 75 76 77 78 79 7A 83 84 85 86 87 88 89 8A 92 93 94 95 96 97 98 99 9A A2 A3 A4 A5 A6 A7 A8 A9 AA B2 B3 B4 B5 B6 B7 B8 B9 BA C2 C3 C4 C5 C6 C7 C8 C9 CA D2 D3 D4 D5 D6 D7 D8 D9 DA E1 E2 E3 E4 E5 E6 E7 E8 E9 EA F1 F2 F3 F4 F5 F6 F7 F8 F9 FA

(1)FF C4 Haffman表起始标识

(2)00 B5 数据长度为181

(3)10 表示第一个DHT表,类型为AC,ID为0,低4位是 HT ID 号,第5位是 HT 表类型标记,再高三位是为0

(4)后面的16个字节数据表示每个编码组中有几个代码,然后是对应保存的值

组号

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

个数

00

02

01

03

03

02

04

03

05

05

04

04

00

00

01

7D

0

2

1

3

3

2

4

3

5

5

4

4

0

0

1

125

即Haffman表为:

序号

码字长度

码字(二进制)

权值(数据位数)(16进制)

0

2

00

01

1

2

01

02

2

3

100

03

3

4

1010

00

4

4

1011

04

5

4

1100

11

6

5

11010

05

7

5

11011

12

8

5

11100

21

9

6

111010

31

10

6

111011

41

11

7

1111000

06

12

7

1111001

13

13

7

1111010

51

14

7

1111011

61

15

8

11111000

07

16

8

11111001

22

17

8

11111010

71

18

9

111110110

14

19

9

111110111

32

20

9

111111000

81

21

9

111111001

91

22

9

111111010

A1

23

10

1111110110

08

24

10

1111110111

23

25

10

1111111000

42

26

10

1111111001

B1

27

10

1111111010

C1

28

11

11111110110

15

29

11

11111110111

52

30

11

11111111000

D1

31

11

11111111001

F0

32

12

111111110100

24

33

12

111111110101

33

34

12

111111110110

62

35

12

111111110111

72

36

15

111111111000000

82

37

16

1111111110000010

09

38

16

1111111110000011

0A

39

16

1111111110000100

16

40

16

1111111110000101

17

41

16

1111111110000110

18

42

16

1111111110000111

19

43

16

1111111110001000

1A

44

16

1111111110001001

25

45

16

1111111110001010

26

46

16

1111111110001011

27

47

16

1111111110001100

28

48

16

1111111110001101

29

49

16

1111111110001110

2A

50

16

1111111110001111

34

51

16

1111111110010000

35

52

16

1111111110010001

36

53

16

1111111110010010

37

54

16

1111111110010011

38

55

16

39

56

16

3A

57

16

43

58

16

44

59

16

45

60

16

46

61

16

47

62

16

48

63

16

49

64

16

4A

65

16

53

66

16

54

67

16

55

68

16

56

69

16

57

70

16

58

71

16

59

72

16

5A

73

16

63

74

16

64

75

16

65

76

16

66

77

16

67

78

16

68

79

16

69

80

16

6A

81

16

73

82

16

74

83

16

75

84

16

76

85

16

77

86

16

78

87

16

79

88

16

7A

89

16

83

90

16

84

91

16

85

92

16

86

93

16

87

94

16

88

95

16

89

96

16

8A

97

16

92

98

16

93

99

16

94

100

16

95

101

16

96

102

16

97

103

16

98

104

16

99

105

16

9A

106

16

A2

107

16

A3

108

16

A4

109

16

A5

110

16

A6

111

16

A7

112

16

A8

113

16

A9

114

16

AA

115

16

B2

116

16

B3

117

16

B4

118

16

B5

119

16

B6

120

16

B7

121

16

B8

122

16

B9

123

16

BA

124

16

C2

125

16

C3

126

16

C4

127

16

C5

128

16

C6

129

16

C7

130

16

C8

jpg图片解码详细过程相关推荐

  1. ffmpeg编解码详细过程

    1. 注册所有容器格式和CODEC:av_register_all() 2. 打开文件:av_open_input_file() 3. 从文件中提取流信息:av_find_stream_info() ...

  2. Yolov5自定义图片训练测试及模型调优(详细过程)

    Yolov5自定义图片训练测试及模型调优(详细过程) 1. 图像数据获取.标注 2. 数据集划分及准备 3. 配置训练参数,准备训练: 3.1 修改data/训练配置xxx.yaml文件: 3.2 修 ...

  3. 【PyTorch】构造VGG19网络进行本地图片分类(超详细过程)——项目介绍

    本篇博客主要解决以下3个问题: 如何自定义网络(以VGG19为例). 如何自建数据集并加载至模型中. 如何使用自定义数据训练自定义模型. 第一篇:[PyTorch]构造VGG19网络进行本地图片分类( ...

  4. 从输入网址到页面呈现的详细过程

    从输入网址到页面呈现的详细过程 面试题经典题目,简要回答如下: a.域名解析 b.发起TCP连接的三次握手 c.建立TCP连接后发起http请求 d.服务端响应http请求,返回响应报文 e.浏览器页 ...

  5. 1.基于S5PV210的图片解码播放器(详解)

    有道云笔记详细地址: 文档:图片解码播放器小项目(详解).note 链接:http://note.youdao.com/noteshare?id=9f9a43ac5ec6828cf467940dfa1 ...

  6. Win7安装64位CentOS 6.4双系统详细过程

    原文连接Win7安装64位CentOS 6.4双系统详细过程 本文是在两篇文章整合而成.分别是: Mr.Johness的 最清晰细致的教程!一步步教你打造Win7+CentOS双系统 和 cjh326 ...

  7. Ospf在广播网络中建立邻居关系的详细过程

    Ospf 在广播网络中建立邻居关系的详细过程 目的:观察在广播网络中,OSPF建立邻接关系的过程 拓扑及设备需求 拓扑: 图片1 设备需求:3台路由器,ios版本为12.2 需求:配置3台路由器的以太 ...

  8. Keil(MDK-ARM-STM32)系列教程(一)_新建软件工程详细过程

    Ⅰ.写在前面 本文使用目前(2016年11月)最新版本Keil(MDK-ARM)V5.21a开发环境.以STM32的处理器为例给大家讲述新建一个软件工程的详细过程. Keil(MDK-ARM)V4和V ...

  9. linux php和java环境变量配置_java_linux配置java环境变量详细过程,直接上实现过程: 一. 解压安 - phpStudy...

    linux配置java环境变量详细过程 直接上实现过程: 一. 解压安装jdk在shell终端下进入jdk-6u14-linux-i586.bin文件所在目录, 执行命令 ./jdk-6u14-lin ...

最新文章

  1. shell 去掉字符串中的字母
  2. php mysql 数据回滚,PHP mysql事务回滚操作实例_PHP教程
  3. java 前端页面传过来的值怎么防止篡改_答对这40道经典web前端面试题,想不拿到offer都难!...
  4. 用Unity实现传送门效果(一)
  5. 巧用 Lazy 解决.NET Core中的循环依赖关系
  6. 第五十八期:从0到1 手把手教你建一个区块链
  7. 程序员九重镜界,很老的今天刚刚翻出来
  8. python百钱买百鸡问题答案_PHP/Python---百钱百鸡简单实现及优化
  9. 软考信息安全工程师学习笔记目录
  10. flask-mail异步发送邮件_异步、定时、邮件任务
  11. Druid monitor中数据源只显示() property for user to setup(已解决)
  12. 剑指offer——面试题14:调整数组顺序使奇数位于偶数前面
  13. RabbitMQ的工作模式及消息顺序性的保证
  14. MAC装虚拟机显示打不开 /dev/vmmon: 断裂管道 请确保已载入内核模块 ’vmmon’
  15. 百度地图api根据地图缩放等级显示不同的marker点,功能二
  16. 公司“内部管理混乱,工作很难开展”!
  17. java 使用class转型_java中向上转型(upcast)和向下转型(downcast)
  18. 什么是VOIP和SIP?
  19. 帝企鹅变形记:开放与封闭 马化腾将左右下半生
  20. vue2+electron 给大家说个相声

热门文章

  1. android之fragment征程
  2. 日期类Date控制台应用程序设计C#
  3. 曲鸟全栈UI自动化教学(三):Selenium页面操作原理及如何高效的进行元素定位
  4. div随鼠标移动 酸奶公园
  5. IIS FTP 上传文件550错误
  6. 『开发』网页端展示深度学习模型|Gradio上手教程
  7. Servlet的监听器
  8. USACO starry
  9. 如何根据年月计算月份最大天数
  10. javascript基础练习