Как написать декодер файлов JPEG с нуля
Я знаю, что для этого уже есть много инструментов. Моя цель - учиться.
Поэтому я могу читать файл JPEG с помощью функции fopen(), я знаю, что это двоичный файл.
И что? Я знаю, что могу узнать характеристики JPEG. Но, похоже, он не знает, что такое структура двоичного файла jpeg.
Этот файл содержит нули и единицы
Как я могу преобразовать это или как я могу узнать, какая цепочка битов означает что?
Я столкнулся с этим примером: nano jpeg-декодер
Но довольно сложно прочитать код
Заранее спасибо
PS: Этот парень-принцесс сделал проект по этому вопросу, который дает хорошую ссылку
Ответы
Ответ 1
Эта страница содержит много информации о том, как обрабатывать файл jpeg. Кроме того, вы можете взглянуть на мою собственную попытку при написании jpeg-декодера в Python.
Коротким именам переменных в программе часто соответствуют переменные в стандарте. Поэтому, если у вас есть готовый стандарт, это очень поможет. Он называется МСЭ-1150 и свободно доступен в Интернете.
Ответ 2
Jpegs сложны, если вы только начинаете. Вам нужно работать с таблицами huffmann, иметь некоторую функцию быстрого обратного дискретного косинусного преобразования и способность интерпретировать таблицы квантования.
http://en.wikipedia.org/wiki/JPEG весьма полезно.
Если вы хотите начать с чего-то более простого, посмотрите на PNG. Формат - это в основном заголовок, за которым следует куча переменной длины, фрагменты, а затем поток zlib. Декомпрессия, которая оставляет вас с почти сырыми пикселями, но они были отфильтрованы. Открепление легко.