如何从头开始编写JPEG文件解码器

时间:2011-07-29 09:17:48

标签: jpeg

我知道有很多工具可供选择。我的目标是学习。 所以我可以用fopen()读取一个JPEG文件,我知道这是一个二进制文件。 那又怎样?我知道我可以学习JPEG规范。但它似乎没有说明二进制jpeg文件的结构是什么。

此文件包含零和1 我怎样才能改变这一点,或者我怎么知道哪个比特链意味着什么呢?

我遇到过这个例子:nano jpeg decoder 但是阅读代码非常困难

提前致谢

PS:This princeton guy has done a project on this which provides a good reference

2 个答案:

答案 0 :(得分:26)

This页面有很多关于如何处理jpeg文件的信息。此外,您可以在Python中编写jpeg解码器时查看my own attempt

程序中的短变量名称通常直接对应于标准中的变量。因此,如果您准备好标准,它将会有很大帮助。它被称为ITU-1150,可以在互联网上免费获得。

答案 1 :(得分:13)

如果你刚开始的话,Jpegs很棘手。您需要使用霍夫曼表,具有某种快速逆离散余弦变换函数,以及解释量化表的能力。

http://en.wikipedia.org/wiki/JPEG非常有帮助。

如果您想从更简单的事情开始,请查看PNG。格式基本上是一个标题,后跟一堆可变长度,块,然后是一个zlib流。解压缩会留下几乎原始的像素,但它们已被过滤掉了。不受过滤很容易。