JPEG图的EXIF个别不一定获取图像宽高,解码图像获取,这样解码图像时间耗时很大。因为SOFO字段提高解码信息所以一定存放宽高信息。所以我把SOFO字段宽高读取出来就行。
场地 | 尺寸 | 描述 |
---|---|---|
标记标识符 | 2字节 | 0xff、0xc0识别SOF0标记 |
长度 | 2字节 | 该值等于8+成分*3值 |
数据精度 | 1字节 | 以位/样本为单位,通常为 8(大多数软件不支持 12 和 16)。 |
图像高度 | 2字节 | 该值必须 > 0 |
图像宽度 | 2字节 | 该值必须 > 0 |
元件数量 | 1字节 | 通常 1 = 灰度,3 = 彩色 YcbCr 或 YIQ |
各组件 | 3字节 | 读取每个组件3字节的数据。它包含(分量 Id(1 字节)(1 = Y、2 = Cb、3 = Cr、4 = I、5 = Q)、采样因子(1 字节)(位 0-3 垂直、4-7 水平。) ,量化表号(1字节))。 |
上面表资料很容易可以查询到。
所以我们检测0xFFC0就行。前面7个字节一般都是0XFFC0001108(或者直接检测这个)
一般来说检测0XFFC0,后面直接获取就行 。但是现在很多JPEG图存在缩略图,(比如:三星 苹果)所以存在多个0XFFC0字段。
这样一来,我们需要检测文件所有字段0XFFC0。不能只定位一个。