JPEG数据格式分析

2023-11-17

添加链接描述
参考如让(感谢原创分享):
JPEG数据分析:
在这里插入图片描述

分析对象是一幅8x8的jpg图片。如下,图片已被放大并被虚线切分
这里写图片描述
用windows照片查看器查看图片详细信息:

信息 参数
大小 667字节
尺寸 8x8
宽度 8像素
高度 8像素
水平分辨率 96dpi
垂直分辨率 96dpi
位深度 24
用UltraEdit打开图片,截图如下:
这里写图片描述
在这里插入图片描述

将该数据切分为10个部分,图中已做标记。

预备知识
数据第一部分
JPEG格式由SOI(start of image)标记码开头:

标记结构 字节数
0xFF 1
0xD8 1

SOI不用解释。
紧接着是标记码APP0(application),JFIF将文件的相关信息定义在此标记中,如下

标记结构 字节数 意义 对应数据(十六进制)
0xFF 1 FF
0xE0 1 E0
Lp 2 APP0标记码长度 00 10(由此看出该标记码长度为16字节)
Identifier 5 JFIF识别码 4A 46 49 46 00(“JFIF”)
Version 2 JFIF版本号 01 01
Units 1 单位 01
Xdensity 2 水平分辨率 00 60(90dpi)
Ydensity 2 垂直分辨率 00 60(90dpi)
Xthumbnail 1 水平点数 00
Ythumbnail 1 垂直点数 00

至此,数据第一部分分析完。

数据第二部分
该部分是DQT(define quantization table)标记码。看看该标记码格式:
标记结构 字节数 意义 对应数据(十六进制)
0xFF 1 FF
0xDB 1 DB
Lq 2 DQT标记码长度 00 43(67字节)
(Pq, Tq) 1 在基本系统中Pq=0,Tq=0~1 00(说明后面量化表中的每个值为1个字节)
Q0 1或2 量化表的值 02
Q1 1或2 量化表的值 01

Qn 1或2 量化表的值 0c

至此,数据第二部分也分析完

数据第三部分
该部分数据开头为0xFF 0xDB,显然该部分也是个DQT标记码,分析如上,不再赘述。

数据第四部分
该部分开头为0xFF 0xC0,该部分为SOF(start of frame)标记,基线离散余弦变换

标记结构 字节数 意义 对应数据(十六进制)
0xFF 1 FF
0xC0 1 C0
Lf 2 SOF标记码长度 11(17字节)
P 1 基本系统中为8 08
Y 2 图像高度 00 08(8个像素)
X 2 图像宽度 00 08(8个像素)
Nf 1 为1代表灰度图,为3代表彩色图 03(彩色)
C1 1 成分编号 1 01
(H1, V1) 1 第一个采样因子 22
Tq1 1 该量化表编号 00

Cn 1 成分编号n 03
(Hn,Vn) 1 第n个采样因子 11
Tqn 1 该量化表编号 01
数据第五部分
该部分开头为0xFF 0xC4,是DHT(define huffman table)标记码定义了哈弗曼树表

标记结构 字节数 意义 对应数据(十六进制)
0xFF 1 FF
0xC4 1 C4
Lh 2 DHT标记码长度 00 1F(31个字节)
(Tc, Th) 1 00
L1 1 00

L16 1 00
V1 1 01

Vt 1 0B

该标记中,Tc为0指DC所用的Huffman表,Tc为1指AC所用的Huffman表,Th的值为0或1,2Tc+Th表示Huffman表的编号(最多4个),Ln表示每个n为Huffman码字的个数,n = 1~16。Vt表示每个Huffman码字所对应的值,t = L1+L2+…+L16

数据第六部分
同上

数据第七部分
同上

数据第八部分
同上

数据第九部分
该部分为SOS(start of scan)标记码,如下表

标记结构 字节数 意义 对应数据(十六进制)
0xFF 1 FF
0xDA 1 DA
Ls 2 SOS标记码长度 00 0C
Ns 1
Cs1 1

(Td1,Ta1) 1
CsNs
(TdNs,TaNs)
Ss
Se
(Ah,Al)

Ns为scan中成分的个数,CsNs为在scan中的编号,TdNs为高4位,TaNs为低4位,分别表示DC和AC编码表的编号, 基本系统中,Ns = Nf,Ss,Se,Ah,Al均为0

数据第十部分
图像结束标记码0xFF 0xD9,标记码EOF(end of image)

标记结构 字节数
0xFF 1
0xD9 1

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JPEG数据格式分析 的相关文章

随机推荐

  • 解决IDEA导入MAVEN项目,jar包没有引进来报Cannot resolve symbol 'Autowired'

    解决IDEA导入MAVEN项目 jar包没有引进来报Cannot resolve symbol Autowired 原因 IDEA的缓存导致 解决办法 找到项目所在文件夹 找到 idea文件夹 删掉 从新导入 就好了
  • Web后端开发(请求响应)上

    请求响应的概述 浏览器 请求 lt HTTP协议 gt 响应 Web服务器 请求 获取请求数据 响应 设置响应数据 BS架构 浏览器 服务器架构模式 客户端只需要浏览器 应用程序的逻辑和数据都存储在服务端 维护方便 体验一般 CS架构 客户
  • Navicat15工具连接PostgreSQL15失败

    1 错误现象及原因 错误现象 错误原因 postgresql 15版本中 pg database 系统表把 datlastsysoid 列删除了 所以造成了此错误 2 解决方法 1 将Navicat工具更新到官网最新版本 2 更换 post
  • uboot SPL framework的前世今生

    一开始只有uboot 没有SPL 后来由于一些原因 参考文献1 有些公司如TI添加了SPL 模块 SPL的作用为 参考文献2 为了提高代码的可重用性 uboot 2012 10中将SPL模块标准化 叫做SPL framework 查看ubo
  • 双指针技巧总结

    一 双指针技巧 情景1 通常 我们只需要一个指针进行迭代 即从数组中的第一个元素开始 最后一个元素结束 然而 有时我们会使用两个指针进行迭代 双指针的典型场景 1 从两端向中间迭代数组 2 一个指针从头部开始 而另一个指针从尾部开始 1 反
  • python获取最大、最小值

    1 获取数组极值 并返回索引 c 10 5 0 5 3 10 15 20 25 print c index min c 返回最小值 print c index max c 返回最大值 2 对series求最值 file path D Rec
  • 【C++】模板初阶

    文章目录 1 文件的编译和链接 1 1编译 1 2链接 2 函数模板 2 1函数模板格式 2 2函数模板的显示实例化 2 3非模板函数和同名函数模板的调用顺序 3 类模板 4 模板声明和定义分离的情况 1 文件的编译和链接 1 1编译 编译
  • (一)linux系统简介, centos简介及特点,设置静态IP,防火墙

    本章重点 linux系统简介及特点 下载安装 网络和防火墙的相关命令 具体内容 linux系统简介 Linux 内核最初只是由芬兰人林纳斯 托瓦兹 Linus Torvalds 在赫尔辛基大学上学时出于个人爱好而编写的 git 代码同步技术
  • [007]爬虫系列

    一 背景 有些时候网站开发者为了反爬 会做一些状态码欺骗的处理 原理如下 例如 浏览器发送一个请求 获取一个js文件 服务器返回状态码 例如 503等 此时浏览器就会按照状态码503给它做相应的处理 即 浏览器为了速度 会清缓存 所以直接s
  • 压力测试工具apache-ab讲解

    最近在做webservices 得到的数据是从德国那边的服务器 要将这些数据整合到现在网站中去 不知道性能如何 就做个压力测试 现在有些压力测试工具都是收费的 在开源的apache中自带个ab工具 就在C Apache2 2 bin ab
  • Leetcode初级算法——链表

    删除链表中的节点 请编写一个函数 使其可以删除某个链表中给定的 非末尾 节点 传入函数的唯一参数为 要被删除的节点 现有一个链表 head 4 5 1 9 它可以表示为 示例 输入 head 4 5 1 9 node 5 输出 4 1 9
  • pycharm使用anaconda

    一 Anaconda 1 简介 Anaconda就是可以方便的对的python包进行管理 并且可以通过可视化界面对虚拟环境进行管理 Anaconda包含大部分python库 且自带jupyter notebook等一系列应用 实在是学习py
  • Anaconda Prompt 如何切换工作路径

    Anaconda Prompt 默认路径 默认路径是你的用户名路径 切换路径 Anaconda Prompt在默认路径下 无法直接cd到其他盘 只能在根目录下进行切换盘符 在用户名路径下 输入cd 切换到根目录 返回根目录 使用cd 切换到
  • Office 之将 PPT 图片完美插入 Word

    将 PPT 图片完美插入 Word 原始文档 https www yuque com lart tools wdg4ww 前言 PPT 提供了简单易用的基本绘图支持 而 Word 则提供了专业的文档撰写和处理的支持 但这些工具并不是独立且互
  • 国内版ChatGPT插件来了,快速帮你阅读分析一本书,拆书神器

    好消息 我们都知道 自 OpenAI 开放插件后 其插件数量一直在迅速增加 据国外网友统计 最新的插件总数已经有 430 个 与 5 月 13 日刚开放时的 74 个相比 增长超过 400 而现在 文心一言网页版也正式添加了插件机制 普通用
  • 数据库操作不再困难,MyBatis动态Sql标签解析

    系列文章目录 MyBatis缓存原理 Mybatis的CachingExecutor与二级缓存 Mybatis plugin 的使用及原理 MyBatis四大组件Executor StatementHandler ParameterHand
  • 网页设计,前端大作业-个人主页网站

    个人主页网站 下载链接在文末 个人介绍 比较简单的一个网站适合初学者学习使用 点我下载
  • 简单有效,如何彻底卸载删除AlibabaProtect.exe

    简单有效 如何彻底卸载删除AlibabaProtect exe Process Hacker https www isharepc com 33781 html
  • Java常量池理解和经典总结

    Java常量池理解和经典总结 一 相关知识 1 什么是常量 第一种 是一个值 这个值本身 我们就叫做常量 整型常量 1024 实型常量 1 024 字符常量 g c w 字符串常量 gcw 逻辑常量 true false 这只是我们平时我们
  • JPEG数据格式分析

    添加链接描述 参考如让 感谢原创分享 JPEG数据分析 分析对象是一幅8x8的jpg图片 如下 图片已被放大并被虚线切分 这里写图片描述 用windows照片查看器查看图片详细信息 信息 参数 大小 667字节 尺寸 8x8 宽度 8像素