|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Работа с файлами PNG
Изучаю обработку файлов 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 значения смещений оказываются больше,чем количество обработанных данных, и смещение невозможно) . Подскажите, могут ли алгоритмы декодирования и/или фильтрации быть различными,если да - в каких случаях, в чем еще может быть причина подобной проблемы декодирования? Знатоки png отзовитесь! |