<P>to liangdan:</P>
<P>我前面说的你可能没听明白,我还是认为你那张图的量化表有问题。</P>
<P>你看看“0xFFDB0x0084”这一段到下一段“0xFFDD”之间,数一数有几个字节?不是132个,而是196个,你的软件是如何能够处理?读文件的指针会不会出错?程序会不会异常而退出?如果是硬件解码的话,更是难以预料。</P>
再看看你转换后的图,量化表是分两段的,问题不在这里。对比两图的量化表,发现原图的量化表在QT_C(色量化表)后又多出来一段数据“0x0A0x0B。。。”像是复制了QT_C的一段,而本该在这段数据之前就结束,这正好符合“0x84”的长度。
<P>PC机的专用看图软件(如ACDSee)是怎么能看原图的,具体我不知道,看可以肯定它的处理能力及容错能力要强大的多。至于我说到“JFIF”和“EXIF”格式之外的格式,其本身倒不是问题,问题是格式和生成图像的软件(或者说是JPEGcoding算法)是紧密联系的,如经过ACDSee转换后的图一般是“JFIF”格式,而“EXIF”这一般是数码相机支持的格式。这个问题远不是将0xE2修改0xE0那么简单。</P>
<P>你认为打不开图片的原因是0xFFDD(restart)有何根据?如果你有怀疑,你完全可以把它删除掉,量化表接着就是0xFF0xC0(SOF),你再看有什么影响。
其实一个可靠的JPEG解码程序,在SOS开始后读取压缩数据解码前,无论有没有restart,都会重值HUFFMAN表的。</P>
[此贴子已经被作者于2006-5-19 22:16:39编辑过] |