В одной из статей была рассмотрена структура PNG файлов. Стоит напомнить о том, что первые 8 байт файла – это сигнатура PNG 89 50 4E 47 0D 0A 1A 0A. То, что идет дальше является фрагментами (chunk).
Структурно чанк включает в себя: 4 байта длина фрагмента (Length), 4 байта типа чанка (Chunk type), данные (Chunk data) и 4 байта контрольной суммы (CRC). В случае отсутствия какой-либо информации чанке, длина равняется нулю, а блок чанк данных отсутствуют. CRC всегда присутствует, даже для фрагментов, не содержащих данных.
Если первая буква названия чанка заглавная, значит фрагмент «критический», иными словами без него изображение не удастся посмотреть ни в каком виде, и если хоть один из критических фрагментов отсутствует, декодер должен завершить свою работу ошибкой.
Существует четыре обязательных (критически важных) фрагмента: IHDR, IDAT, PLTE, IEND.
Однако здесь возникает неоднозначность - палитра критически важна только для изображений, у которых ColorType = COLOR_PALETTE, для...