Portable Network Graphics (PNG) — это один из самых популярных форматов для хранения графики с потерей качества, который заслуженно пользуется широкой поддержкой в интернете, графических редакторах и приложениях для просмотра изображений. Его третье издание, принявшее статус официальной рекомендации W3C с 24 июня 2025 года, закрепляет ряд современных улучшений и расширений, способных удовлетворить потребности как обычных пользователей, так и профессиональных разработчиков и дизайнеров. Именно об особенностях и глубоком понимании спецификации PNG третьего издания пойдет речь в этой статье. Формат PNG известен как свободная замена формата GIF, а также как альтернатива TIFF в ряде сценариев благодаря поддержке компрессии без потерь и возможности использования прозрачности. Одним из главных преимуществ PNG является его патентная свобода, что позволяет широко применять данный формат без опасений юридических ограничений.
Спецификация третьего издания сохранила и укрепила ключевые свойства PNG — кроссплатформенность, надежность передачи и эффективность хранения. PNG предлагает поддержку различных типов изображений — от стандартных полноцветных картинок с альфа-каналом до индексированных палитрой и градаций серого с разной глубиной проб. Диапазон глубин выборок расширен от минимального одного бита до 16 бит, что позволяет использовать формат для широкого спектра цветовых нюансов и технических требований. Это делает PNG универсальным форматом, способным хранить как простые логотипы, так и высококачественные фотографии с поддержкой HDR. Одной из значимых новинок третьего издания является расширенная поддержка анимации через интегрированный стандарт APNG (Animated PNG).
Этот формат совместим с базовым PNG и позволяет создавать мультифреймовые анимации с 24-битным цветом и 8-битной прозрачностью, существенно превосходя возможности формата GIF. APNG обеспечивает плавность воспроизведения и использование прозрачных кадров, что делает его идеальным выбором для веб-анимации и современных интерфейсов. Структурно PNG состоит из заголовка, основной информации об изображении и серии «чанков» — специальных блоков данных, которые несут в себе как информацию о цветах и палитрах, так и данные изображения, метаданные и дополнительные сведения. Твердое соблюдение порядка и характеристик этих чанков обеспечивает надежность и универсальность формата. Спецификация четко регламентирует значения для глубины цвета, способов сжатия, фильтрации и порядка расположения чанков, что гарантирует совместимость между различными декодерами и программным обеспечением.
Каждый файл PNG начинается с установленной сигнатуры из восьми байт, позволяющей программам легко опознавать формат и обнаруживать первые признаки порчи или неправильной обработки файла. Сразу за ней следует критический чанок IHDR, содержащий основную информацию — ширину, высоту изображения, глубину, тип цвета, методы сжатия, фильтрации и интерлейсинга. Раздел цветовых пространств в спецификации PNG существенно обновлен. Теперь поддерживается несколько способов указания цветового пространства: через стандартные профили ICC (iCCP), метаданные CICP, а также традиционные методы, основанные на гамме и хроматичности. Первенство приоритетов у новых методов, особенно cICP, обеспечивающих эффективную передачу как стандартного, так и широкого цветового диапазона.
Это особенно актуально в эпоху HDR и широких цветовых гамм, обеспечивая точную цветопередачу на различных устройствах и платформах. Глубина прозрачности и способ ее кодирования — ещё одна сфера, где PNG отличается гибкостью. Прозрачность может передаваться напрямую в альфа-канале (для truecolor и grayscale с альфа), либо посредством вспомогательного слоя tRNS, содержащего значения прозрачности для цветов палитры или отдельных оттенков. Формат PNG использует непремноженный (unassociated) альфа-канал, что облегчает редактирование и манипуляции с изображением без потери качества. Процесс кодирования данных изображения в PNG включает несколько этапов: извлечение пассов для интерлейсинга (interlacing), сериализация сканлайнов, применение фильтров и дальнейшая компрессия методом deflate, основанным на алгоритме LZ77.
Особое внимание уделяется фильтрации, призванной улучшить эффективность сжатия. Спецификация описывает пять типов фильтров, включая оригинальный Paeth алгоритм, который подбирает оптимальные прогнозные значения для байтов в сканлайнах, повышая степень сжатия без потерь. Интерлейсинг в PNG (метод Адам7) дает возможность постепенной загрузки изображений, улучшая восприятие при медленных сетевых соединениях. Семипроходный способ передачи пикселей позволяет сначала получить процветание образа с низким разрешением, который потом последовательно улучшится. Для более новых реализаций спецификация требует обязательную поддержку интерлейса, чтобы гарантировать универсальность файлов.
Особое место занимают расширения и дополнительные данные, которые могут быть включены в PNG. Спецификация поддерживает множество специализированных чанков: описание палитр (PLTE, sPLT), гистограммы, данные о физических размерах пикселя (pHYs), временные метки (tIME), метаданные Exif, текстовую информацию (tEXt, zTXt, iTXt), данные о прозрачности, а также новые для третьего издания HDR-метаданные — Mastering Display Color Volume (mDCV) и Content Light Level Information (cLLI). Эти последние дают возможность описывать параметры, используемые в HDR-воспроизведении, как пиковая яркость и средняя яркость кадров, что критично для профессиональных видео- и фото-нишей. Поддержка метаданных и текстовых блоков существенно расширяет сферу применения PNG. Можно хранить информацию об авторстве, описанию, лицензиях, технических деталях снимка, что упрощает каталогизацию и дальнейшую обработку.
При этом спецификация рекомендует использовать UTF-8 кодировку для интернационализации данных, а также обеспечивает сжатие текстовых чанков для оптимальной компактности. Ошибкоустойчивость и безопасность являются приоритетными задачами спецификации. Все чанки снабжены контрольной суммой CRC, что позволяет выявлять ошибки передачи и повреждения файлов. Кроме того, формат предусматривает строгую организацию и обработку неизвестных или нестандартных чанков, чтобы избежать некорректной интерпретации данных и обеспечить совместимость с будущими расширениями. Для энкодеров и декодеров PNG прописаны требования к конформности.
Например, энкодеры должны гарантировать корректное масштабирование значений выборки при несовпадении глубины цвета, соблюдение порядка чанков и правильное формирование фильтров. Декодеры обязаны корректно обрабатывать все официально определённые базовые и вспомогательные чанки, выявлять и восстанавливаться после ошибок, обеспечивать корректное отображение и поддержку анимации, прозрачности, цветовых пространств и других особых возможностей. Кроме того, спецификация подчёркивает важность гибкости для будущих расширений, допускает создание приватных чанков для специфичных нужд без нарушения совместимости. Для таких приватных чанков существуют четкие рекомендации по именованию и использованию. PNG третьего издания представляет собой великолепный баланс между производительностью, гибкостью и простотой реализации.