我是JPEG新手,我正在尝试解码(可能是损坏的)JPEG(或更确切地说是JFIF)文件。
我的图像查看器程序抱怨有一个非法的0xb9标记。
该文件没有SOF(帧开始)标记,而是具有此APP1段
ff e1 00 0b 50 49 43 00 02 28 3c 01 00
此段后面带有0xb9标记:
ff b9 00 11 08 06 4c 04 d3 03 01 22 00 02 11 01 03 11 01
我在这里看什么?
编辑
有人问我文件的来源。这是故事:
大约20年前,我通过CD-ROM购买了一些杂志。但是,只能在旧的Windows计算机上阅读这些杂志,因此我正在尝试寻找另一种阅读方法-最好是在我的Linux计算机上可以使用的方法。据我所知,杂志页面存储为许多JFIF文件,这些文件只是串联在一起。
因此,首先,我提取了一个JFIF文件,现在我试图找到一种查看它的方法。
编辑2
已要求我共享图片文件。我不确定是否要侵犯版权,因此几天后我将再次删除该文件。无论如何,有问题的图片文件之一可以从这里下载:
https://www.dropbox.com/s/9da72gdri8c9xwp/f1000.jpg
我不知道文件包含什么,除了它可能是来自MAD Magazine的页面。
ff b9
段看起来非常像SOF0段,将其更改为ff c0
(SOF0)可使图片可见,但只能作为随机像素的集合。
上面提到的APP1段包含字符串PIC
,它不是我所知道的任何APP1段类型的一部分。
编辑3
由于已经回答了这个问题,为了避免任何版权问题,我将从Dropbox中删除该文件。感谢所有对此做出贡献的人。
答案 0 :(得分:4)
根据ITU T.86 Amendment 1,标识为“ PIC”的APP1段包含“ Accusoft Pegasus个自定义字段”。这表明该文件可能是使用Accusoft工具创建的,并且它们也可能能够对其进行解码。
(实际上,在your comment above中,您说您设法使用Accusoft的“ Apollo”图片查看器的demo version成功打开了文件。)
关于FFB9分段标记,我仍然不确定这是什么意思。我确实设法在some code中找到了JPEG XT reference implementation(称为“ libjpeg”;不要与Independent JPEG Group广泛使用的library of the same name混淆),它似乎可以识别它,并且包括一条评论说它表示“残留扫描,采用ac编码”。但是,无论 是什么意思,我都不确定100%。
Apparently与支持每像素超过8位动态范围的图像有关,“残差扫描”存储可与基本8位JPEG结合使用的其他高精度像素数据图像数据以重建完整的HDR图像。但是,如果是这样,拥有仅具有这种残留扫描标记而没有任何常规SOI标记的文件似乎很奇怪。鉴于according to jakub_d,JPEG XT库实际上无法解析您的文件,可能是它以某种非标准的方式使用了标记。