|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
23.10.2012, 18:13 | #1 |
В стагнации
Участник клуба
Регистрация: 29.07.2011
Сообщений: 1,303
|
Необходимо точное описание PNG
Здравствуйте.
Возникла задача считывать ручками, без каких либо библиотек отличных от стандартных в Си, читать PNG файл и переконвертить его в BMP. Итак, BMP понимать научились очень быстро, а вот с PNG возникли проблемы, как минимум на стадии считывания информации, куда уж там до расшифровки. В спецификации, а также вот здесь сказано, что первые 8 байт - это сигнатура содержащая HEX значения: 89 59 4E 47 0D 0A 1A 0A Открываю файл HEX-редактором и смотрю: Всё вроде бы пока верно. Далее, в тех же источника сказано, что СРАЗУ же после сигнатуры идет заголовок IHDR, размером 13 байт. Что мы видим в HEX-е: Красным отмечено 4 "откуда ни возьмись" взявшихся байта, о которых в спецификации, да и вообще нигде ни слова не сказано, собственно, как и самих четырех буквах IHDR, которые отмечены мною синим цветом. Собственно это был вопрос номер Раз. Идем дальше, т.к. считываем 13 байт за заголовком IHDR: Тут всё верно и согласно спецификаци. НО! Дальше указано, что идет или заголовок PLTE, тобишь палитра, или какие-то необязательные левые заголовки, или заголовок IDAT. Опять же подчеркну, что они идет СРАЗУ после IHDR. Заглянём внутрь: Откуда вылезли эти лишних 8 байт после заголовка? Что они значат? Спецификация, собственно, как и любые другие сайты молчат как партизаны, или я просто плохо ищу. Собственно подобная байда на протяжении всего файла, вот я и хочу поинтересоваться, как именно устроен PNG файл, а также неплохо бы примеры кода его читающего, если есть где. P.S. Если кто знает, где есть реализация алгоритма Deflate для PNG изображений, буду очень признателен.
E-mail: pashaworking@gmail.com | ICQ: 479914426 | Skype: moondearr
Понять, чего от тебя требует заказчик – это уже половина всей работы, а иногда и полностью выполненное задание. |
23.10.2012, 20:33 | #2 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,342
|
Читайте спецификацию!
Там четко написано, что сначала идет *размер* блока, потом имя (IHDR) Ref: http://en.wikipedia.org/wiki/Portable_Network_Graphics |
23.10.2012, 21:01 | #3 |
Участник клуба
Регистрация: 23.12.2010
Сообщений: 1,129
|
Смотрим раздел 5.3 спецификации, например.
А все нужные примеры кода есть в libpng, собственно. |
23.10.2012, 21:02 | #4 | ||
В стагнации
Участник клуба
Регистрация: 29.07.2011
Сообщений: 1,303
|
Цитата:
А что делать с байтами после него? 66 A7 06 6C 00 00 00 01 HEX = 7396887973905563649 DEC. Это уж точно не размер следующего блока. Цитата:
E-mail: pashaworking@gmail.com | ICQ: 479914426 | Skype: moondearr
Понять, чего от тебя требует заказчик – это уже половина всей работы, а иногда и полностью выполненное задание. Последний раз редактировалось MooNDeaR; 23.10.2012 в 21:05. |
||
23.10.2012, 23:03 | #5 | |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,331
|
Цитата:
4-байта (длинна) - 4-байта (тип блока) - <данные> - 4-байта (CRT) Как понимаю, размер фрагмента <данные> может быть различным ... Там же есть и ссылки на типы блоков, а так-же на литературу. Замечательная ссылка ... Как это интересно ...
Как-то так, ...
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Паскаль.Описание лабораторной работы. Помиогите сделать описание проги .какая формула что делает. | Elimay25 | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 01.03.2012 16:34 |
Имеется исходник просмотра bmp картинки и заголовков, необходимо переделать под png. Оплата | DENISLED | Фриланс | 1 | 28.04.2011 14:16 |
C++ 1.3.9. Точное значение числа Фибоначчи | frixer | Помощь студентам | 1 | 13.03.2011 19:13 |
Подбор параметра не точное значение | magana | Microsoft Office Excel | 0 | 23.03.2010 22:24 |
SetWindowPos (точное расположение) | BOBAH13 | Win Api | 2 | 19.02.2009 08:39 |