如何区分 JPEG 和 JPEG2000?

How to tell difference between JPEG and JPEG2000?

问题是:如何区分两个文件?一个用 JPEG 编码,另一个用 JPEG2000 编码。

我需要特定于格式的文件 read/write 函数,我无法在不阅读的情况下找到文件编码。 JPEG 现在工作正常,但 JPEG func 无法打开 JPEG2000。 所以我需要确定我的文件是JPG还是JPEG2000。

根据 Digital Formats at Library of Congress,所有 JPEG 2000 文件都以以下签名(也称为幻字节或幻数)开头:

00 00 00 0C 6A 50 20 20 0D 0A 87 0A 

(IANA 记录只列出了前 12 个,所以我省略了其余部分)。

另一方面,普通 JPEG 文件以:

开头
FF D8 FF E0

比较这些字节,您应该可以轻松区分它们。