【发布时间】:2019-05-07 16:54:15
【问题描述】:
我是 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 杂志的一页。
ff b9 段看起来很像 SOF0 段,将其更改为 ff c0 (SOF0) 会使图片可见,但仅作为随机像素的集合。
上面提到的 APP1 段包含字符串 PIC,它不是我所知道的任何 APP1 段类型的一部分。
编辑 3
由于这个问题现已得到解答,我将从 Dropbox 中删除该文件以避免任何版权问题。感谢所有为此做出贡献的人。
【问题讨论】:
-
您的 FFB9 标记看起来很像 SOF 标记。不过显然有些事情搞砸了。
-
@haraldK:我已经编辑了我的帖子以包含指向文件的链接。
-
标记 X'FF02' 到 X'FFBF' 在 ITU T.81 中保留。
-
在进行
FF B9->FF C0更改后,我尝试在 GIMP 中打开您的示例图像,但出现错误提示“未定义 Huffman 表 0x00”。我假设您使用的任何查看器都忽略了该错误并最终输出随机垃圾。 (FWIW,我也在文件中尝试了injecting the standard JPEG Huffman tables,但我得到的只是一堆 RGB 色拉和图像中途出现的“损坏的 JPEG 数据:糟糕的 Huffman 代码”错误。) -
Apparently APP1/PIC 段包含“Accusoft Pegasus 自定义字段”。仍然不确定 FFB9 段是什么,尽管我确实发现 this source file 声称它可能表示“残留扫描,ac coded”(无论这实际上意味着什么)。
标签: jpeg