Работа с файлами PNG

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
kotbimigot
Первый раз сказал Мяу!
Сообщения: 27
Зарегистрирован: Чт июл 01, 2010 19:48:52

Работа с файлами PNG

Сообщение kotbimigot »

Добрый вечер,уважаемые коты! Изучаю обработку файлов PNG с целью вывода картинок на LCD с помощью пока Меги128 ). Перелопачена куча информации, в том числе всяческие описания с официального сайта,алгоритм Deflate и т.п. На данный момент есть несколько неразрешенных вопросов, хотелось бы получить совет знающих людей.
1 В каких случаях при кодировании данных (и декодировании соответственно) используется выравнивание потока?
2 В одной из статей,где описывается формат, отмечено "В формате PNG v1.0 <...>" . Какие сейчас еще существуют версии (известно, что формат оч активно развивается) и в чем между ними различие?
3 Заполнение повторов при заполнении таблицы длин кодов для декодировании данных,сжатых динамическим дефлэйтом, в соответствии с Rfc1951 ведется путем "сopy the previous code", однако при таком заполнении, после расчета количества повторов и начальных кодов и получения таблицы кодов длин, данные из потока не декодируются вообще, да и начальные коды (next_code) вызывают большие сомнения из-за огромного числа повторов (bl_count). В то же время вычитанная из статьи г-на Михальчика "Описание формата сжатия данных Deflate" методика заполнения повторов нулями дает таблицы длин и кодов, по которым данные из потока для относительно небольших файлов различных типов (2,3,4,6), как с динамическим так и со статическим дефлэйтом, успешно декодируются ( с учетом фильтрации). Проблема состоит в том, что декодировать удается все-таки не все файлы - иногда декодируется только одно значение данных из потока, иногда несколько, потом появляется значение, для которого в таблицах нет длины/кода и декодирование невозможно, достаточно часто так происходит после обработки встреченной в потоке команды повтора/смещения (при этом рассчитанные по алгоритму Rfc1951 значения смещений оказываются больше,чем количество обработанных данных, и смещение невозможно) . Подскажите, могут ли алгоритмы декодирования и/или фильтрации быть различными,если да - в каких случаях, в чем еще может быть причина подобной проблемы декодирования?
Реклама
Аватара пользователя
Kavka
Мудрый кот
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

Re: Работа с файлами PNG

Сообщение Kavka »

Может будет, таки, легче взять libpng и zlib? Оставить из них то что надо и не мучатся с написанием собственного варианта кодера/декодера.
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Реклама
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»