...还是我应该更深入地寻找0xFF 0xD8序列的数据流?

this Q中,我了解到APPn不必立即遵循SOI。是否有符合规范的JPEG情况,其中SOI位置!=流的开头?

规范引用(附件B,第1.1.2节):

最佳答案

libjpeg不允许在SOI之前进行垃圾处理:

/* 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.
*/

来自:Random libjpeg mirror

例如。 go implementation也不允许前面的垃圾。

但是,如果有疑问,请遵循Postel法则:



虽然,您不想太宽容,否则可能最终不是从流中提取实际的JPEG,而是从嵌入的EXIF缩略图中提取出类似内容。

09-27 16:36