全部博文(403)
2012年(403)
分类: 嵌入式
2012-03-23 19:47:34
名称 | 字节 | 说明 |
段标识 | >= 1 | 多于一个的0xFF |
段类型 | 1 | 类型编码(称作“标记码”) |
段长度 | 2 | 包括段内容和段长度本身,不包括段标识和段类型 |
短内容 | <= 65533 |
段类型有30种,但只有10种是必须被所有程序识别的,其它的类型都可以忽略。在这么多的段中,其中JPG图片的尺寸相关信息存储在SOF0(图像基本信息)段中。所以需要详细了解一下SOFO段的数据结构。
名称 | 字节 | 说明 |
段标识 | 1 | 0XFF |
段类型 | 1 | 0XCO JFIF格式的为0XC2 |
段长度 | 2 | 其值=8+组件数量×3 |
样本精度 | 1 | 8 每个样本位数(大多数软件不支持12和16) |
图片高的 | 2 | 采用Motorola格式,即:高位在前,低位在后 |
图片宽度 | 2 | 采用Motorola格式,即:高位在前,低位在后 |
由于我们是为了解析JPG图片的宽度和高度信息,所以上表SOFO段结构只列出了到宽度为止结构信息,接下来还有其他一些图片的相关信息,这里就不再列出。
根据上面对JPG图片格式的解析,我们可以分一下几步来解析JPG图片的尺寸信息。
1.读取2个字节的SOI,即0xFFD8,根据这两个字节判断图片是否为JPG图片,如果不是,则退出解析过程。
2.接下来就需要解析图片的数据部分,由于数据部分是有很多不同的数据段构成,数据段拥有一些共同的特性,所以这里我们需要做一个循环来逐个遍历查找到SOFO数据段。
3.找到SOFO数据段后,就可以解析图片的宽度和高度信息。