JPEG文件解码部分

5

我正在尝试使用有限的内存加载大型JPEG文件(数百兆像素的),我只需要20000个扫描行中的约1000个。目前的libjpeg实现(以及其分支libjpeg-turbo)似乎没有提供跳过19k未使用扫描行而不解码它们的方法。是否有绕过libjpeg内部的方法来解决这个问题?

2个回答

2
您无法避免必须解码要跳过的扫描行,但可以避免将它们存储在任何地方。当您从libjpeg获取每行的回调时,请等待行号与您想要跳过的扫描行的部分相匹配。

1
为什么我不能这样做?据我所知,JPEG是以8x8块存储的,因此如果我只需要底部1000个扫描行,我可以跳过顶部块(19k/8),并且只解码我需要的块。我有什么遗漏吗?(暂时不考虑渐进式压缩) - thesame
我已经很久没有与JPEG内部工作过了,但是Huffmann压缩不是在对8x8块进行DCT变换之后应用的吗?这意味着顶部块是可变数量的数据,因此您不知道要跳过多少数据,至少需要进行Huffmann解码。我想你可以这样做,避免进行DCT重建,但正如你所说,这会让你深入到libjpeg的内部。 - Greg Hewgill

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接