我试图让自己满意,我从他们的 FTP 服务器获取的 METEOSAT 图像实际上是有效的图像。我的疑问出现了,因为到目前为止我使用的所有工具都抱怨“假霍夫曼表定义” - 但是当我简单地注释掉该错误消息时,图像看起来很合理(地球圆盘的灰度部分)。
来自https://github.com/libjpeg-turbo/libjpeg-turbo/blob/jpeg-8d/jdhuff.c#L379:
while (huffsize[p]) {
while (((int) huffsize[p]) == si) {
huffcode[p++] = code;
code++;
}
/* code is now 1 more than the last code used for codelength si; but
* it must still fit in si bits, since no code is allowed to be all ones.
*/
if (((INT32) code) >= (((INT32) 1) << si))
ERREXIT(cinfo, JERR_BAD_HUFF_TABLE);
code <<= 1;
si++;
}
如果我简单地注释掉检查,或者添加一个huffsize[p]
非零检查(如在包含循环的控制表达式中),然后djpeg
设法将图像转换为 BMP,我可以轻松查看它。
为什么评论声称不允许使用全一代码?