...或者我应该更深入地查找数据流以寻找0xFF 0xD8序列?
从这个问题来看,我已经了解了APPn没有立即关注SOI的内容.是否存在符合规范的JPEG情况,其中SOI位置!=流的开头?
引用规范(附件B,第1.1.2段):
标记用于识别压缩数据格式的各种结构部分.大多数标记开始包含相关参数组的标记段; 一些标记独立.所有标记被分配两个字节码:一个X'FF"字节后面是不等于0或X'FF字节"(见表B.1).任何标记可以可选地在任何数量的填充字节之前,这些填充字节是分配代码X'FF'的字节.
libjpegSOI 之前不允许有垃圾:
/* Like next_marker, but used to obtain the initial SOI marker. */
/* For this marker, we do not allow preceding garbage or fill; otherwise,
* we might well scan an entire input file before realizing it ain't JPEG.
* If an application wants to process non-JFIF files, it must seek to the
* SOI before calling the JPEG library.
*/
Run Code Online (Sandbox Code Playgroud)
来自:随机 libjpeg 镜像。
例如,该go实现也不允许前面的垃圾。
然而,如果有疑问,请遵循波斯特尔定律:
接受的内容要自由,发送的内容要保守
不过,您不想太自由,否则您可能最终不会从流中提取实际的 JPEG,而是提取嵌入的 EXIF 缩略图或类似的内容。
| 归档时间: |
|
| 查看次数: |
3862 次 |
| 最近记录: |