Показать сообщение отдельно
  #1  
Старый 02.06.2011, 22:16
kotbimigot kotbimigot вне форума
Прохожий
 
Регистрация: 02.06.2011
Сообщения: 1
Репутация: 10
По умолчанию Работа с файлами 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 отзовитесь!
Ответить с цитированием