JPEG文件头分析
说明jpeg文件结构jiff和exif的基本样式jiff app0标记段exif app1标记段SOF标记段解析jpeg重要段
说明
1 jpeg是一种压缩标准,大幅度缩小数据流,jpeg以FF D8开头,FF D9结束。 2 jpeg图像由多个maker组成,多个maker+compressed组成了jpeg。 3 jiff是一种在万维网上进行jpeg传输的格式,可以理解是对jpeg图片的封装,符合jpeg标准,jiff的maker是app0,记录了图像的基本信息,也可能有缩略图。jiff格式比较老,老式的数码相机使用此格式。 4 exif新比较新的jpeg封装格式,exif的maker是app1,记录了更多的东西,如ISP信息、GPS信息、相机信息,图像旋转等等 5 jiff和exif可以共存,很多jpeg图像都有app0的jiff段和app1的exif段
jpeg文件结构
SOI 0xD8 图像开始 APP0 0xE0 JFIF应用数据块 APPn 0xE1 - 0xEF 其他的应用数据块(n, 1~15) DQT 0xDB 量化表 SOF0 0xC0 帧开始 DHT 0xC4 霍夫曼(Huffman)表 SOS 0xDA 扫描线开始 EOI 0xD9 图像结束
jiff和exif的基本样式
jiff app0标记段
exif app1标记段
SOF标记段
此标记段解析图像宽高
解析jpeg
1 libjpeg开源库只能解析jiff格式的jpeg,不过jiff格式比较简单,我们也可以根据格式自己解析。 2 jhead可以解析exif格式的jpeg,exif标记段比较复杂,信息较多,参考了此开源库做了解析。
重要段
1 app0和app1 判断是哪种封装的jpeg(jiff/exif) 2 解析方向,根据app1中的信息解析,jiff不支持方向 3 解析progressive扫描,通过SOFn判断是baseline还是progressive扫描
————————————————
版权声明:本文为CSDN博主「木木林19」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/kakasxin/article/details/104758227