Как написать декодер файлов JPEG с нуля

Я знаю, что для этого уже есть много инструментов. Моя цель - учиться. Поэтому я могу читать файл JPEG с помощью функции fopen(), я знаю, что это двоичный файл. И что? Я знаю, что могу узнать характеристики JPEG. Но, похоже, он не знает, что такое структура двоичного файла jpeg.

Этот файл содержит нули и единицы Как я могу преобразовать это или как я могу узнать, какая цепочка битов означает что?

Я столкнулся с этим примером: nano jpeg-декодер Но довольно сложно прочитать код

Заранее спасибо

PS: Этот парень-принцесс сделал проект по этому вопросу, который дает хорошую ссылку

Ответ 1

Эта страница содержит много информации о том, как обрабатывать файл jpeg. Кроме того, вы можете взглянуть на мою собственную попытку при написании jpeg-декодера в Python.

Коротким именам переменных в программе часто соответствуют переменные в стандарте. Поэтому, если у вас есть готовый стандарт, это очень поможет. Он называется МСЭ-1150 и свободно доступен в Интернете.

Ответ 2

Jpegs сложны, если вы только начинаете. Вам нужно работать с таблицами huffmann, иметь некоторую функцию быстрого обратного дискретного косинусного преобразования и способность интерпретировать таблицы квантования.

http://en.wikipedia.org/wiki/JPEG весьма полезно.

Если вы хотите начать с чего-то более простого, посмотрите на PNG. Формат - это в основном заголовок, за которым следует куча переменной длины, фрагменты, а затем поток zlib. Декомпрессия, которая оставляет вас с почти сырыми пикселями, но они были отфильтрованы. Открепление легко.