Открыть сервис

Формат PNG

PNG (Portable Network Graphics, произносится «пинг») — это растровый формат хранения графической информации, использующий сжатие без потерь. Он был создан для замены формата GIF (Graphics Interchange Format) и обеспечивает более высокую степень сжатия, поддержку большего количества цветов и, в отличие от GIF, не требует лицензионных отчислений. PNG является одним из наиболее распространённых форматов для веб-графики, редактирования изображений и хранения цифровых иллюстраций.

История

Формат PNG был разработан в 1994—1995 годах группой разработчиков, объединившихся в онлайн-сообществе Usenet. Основной причиной создания стало объявление компанией Unisys и CompuServe о введении лицензионных отчислений за использование формата GIF, который использовал алгоритм сжатия LZW (Lempel-Ziv-Welch), защищённый патентом. В ответ на это сообщество интернет-пользователей решило разработать свободный и открытый формат, не обременённый патентами.

Первая версия спецификации PNG (версия 1.0) была выпущена 1 октября 1996 года и вскоре признана рекомендацией W3C (World Wide Web Consortium). В 1997 году PNG был одобрен как международный стандарт ISO/IEC 15948. Последующие версии (1.1 и 1.2) уточнили спецификацию, добавив поддержку дополнительных функций, таких как гамма-коррекция и текстовые метаданные. В 2003 году вышла версия 1.2, которая остаётся актуальной на сегодняшний день.

Характеристики и устройство

Сжатие без потерь

PNG использует алгоритм сжатия Deflate, который является комбинацией кодирования LZ77 (Lempel-Ziv 1977) и кодирования Хаффмана. В отличие от JPEG (Joint Photographic Experts Group), который использует сжатие с потерями, PNG сохраняет все исходные данные изображения без ухудшения качества. Это делает его идеальным для хранения текста, логотипов, скриншотов и другой графики с чёткими краями и однородными цветами.

Глубина цвета

PNG поддерживает различные режимы глубины цвета:

  • Индексированные цвета (палитра): до 256 цветов (8 бит на пиксель), что позволяет создавать небольшие файлы, аналогичные GIF.
  • Оттенки серого: от 1 до 16 бит на пиксель.
  • Полноцветные изображения (Truecolor): 24 бита на пиксель (по 8 бит на красный, зелёный и синий каналы) или 48 бит (по 16 бит на канал).
  • Альфа-канал: поддержка прозрачности с глубиной до 16 бит на канал, что позволяет создавать полупрозрачные области (в отличие от GIF, где прозрачность может быть только бинарной — полностью прозрачный или полностью непрозрачный пиксель).

Структура файла

Файл PNG состоит из последовательности блоков данных, называемых чанками (chunks). Каждый чанк имеет тип, длину, данные и контрольную сумму CRC (Cyclic Redundancy Check). Основные чанки:

  • IHDR (Image Header): содержит метаданные изображения — ширину, высоту, глубину цвета, тип цветового пространства, метод сжатия, метод фильтрации и метод чересстрочной развёртки.
  • PLTE (Palette): содержит палитру цветов для индексированных изображений.
  • IDAT (Image Data): содержит сжатые данные изображения. Может быть несколько чанков IDAT, которые объединяются для формирования полного изображения.
  • IEND (Image End): маркер конца файла.
  • Дополнительные чанки: tEXt (текстовые метаданные, например, автор или описание), gAMA (гамма-коррекция), cHRM (цветовая характеристика), bKGD (цвет фона по умолчанию), tRNS (прозрачность для индексированных цветов).

Фильтрация строк

Перед сжатием PNG применяет фильтрацию к строкам пикселей, что улучшает степень сжатия. Существует пять типов фильтров:

  • None: без фильтрации.
  • Sub: вычитание значения предыдущего пикселя в той же строке.
  • Up: вычитание значения пикселя из предыдущей строки.
  • Average: усреднение значений предыдущего и верхнего пикселей.
  • Paeth: нелинейная функция, предсказывающая значение пикселя на основе трёх соседних.

Выбор фильтра для каждой строки может быть оптимизирован для минимизации размера файла.

Чересстрочная развёртка

PNG поддерживает чересстрочную развёртку по алгоритму Adam7, который позволяет постепенно отображать изображение при загрузке. Изображение делится на семь проходов, каждый из которых передаёт часть пикселей, что позволяет пользователю увидеть предварительный вид изображения до его полной загрузки.

Применение

Веб-графика

PNG является стандартом для веб-графики, особенно для изображений, требующих прозрачности (например, логотипы, иконки, кнопки). Благодаря поддержке альфа-канала, PNG позволяет создавать плавные переходы между изображением и фоном веб-страницы. В отличие от GIF, PNG не поддерживает анимацию, однако для этой цели существует формат APNG (Animated PNG), который является расширением PNG.

Редактирование изображений

PNG широко используется в графических редакторах (Adobe Photoshop, GIMP, Krita) для сохранения промежуточных версий изображений, так как он не теряет качество при многократном сохранении. Также он применяется для хранения скриншотов, так как сохраняет чёткость текста и мелких деталей.

Цифровая фотография

Хотя PNG не является основным форматом для хранения фотографий (из-за большего размера файлов по сравнению с JPEG), он используется для архивирования изображений, где важна точность цветопередачи и отсутствие артефактов сжатия. Например, PNG применяется в медицинской визуализации, спутниковой съёмке и научной графике.

Полиграфия

PNG поддерживает цветовые пространства RGB (Red, Green, Blue) и оттенки серого, но не поддерживает CMYK (Cyan, Magenta, Yellow, Key), который используется в цветной печати. Поэтому для профессиональной полиграфии PNG применяется ограниченно, чаще для веб-превью или цифровых макетов.

Сравнение с другими форматами

PNG vs GIF

  • Цвета: PNG поддерживает до 16,7 миллионов цветов (Truecolor), GIF — только 256 цветов.
  • Прозрачность: PNG поддерживает полупрозрачность (альфа-канал), GIF — только бинарную прозрачность.
  • Анимация: GIF поддерживает анимацию, PNG — нет (за исключением APNG).
  • Сжатие: PNG обычно обеспечивает лучшее сжатие для изображений с большим количеством цветов, GIF — для изображений с небольшим количеством цветов и однородными областями.
  • Лицензирование: PNG свободен от патентов, GIF исторически был запатентован.

PNG vs JPEG

  • Качество: PNG сохраняет качество без потерь, JPEG использует сжатие с потерями, что приводит к появлению артефактов.
  • Размер файла: JPEG обычно создаёт файлы меньшего размера для фотографий, PNG — для графики с чёткими краями.
  • Прозрачность: PNG поддерживает прозрачность, JPEG — нет.
  • Глубина цвета: PNG поддерживает до 48 бит на пиксель, JPEG — 24 бита.

PNG vs WebP

  • Сжатие: WebP (разработан Google) обеспечивает лучшее сжатие как с потерями, так и без потерь, по сравнению с PNG.
  • Поддержка: PNG поддерживается всеми браузерами и программами, WebP — не всеми (хотя поддержка растёт).
  • Прозрачность: оба формата поддерживают альфа-канал.

Интересные факты

  • Название «PNG» изначально было рекурсивным акронимом «PNG's Not GIF» (PNG — это не GIF).
  • Формат PNG был разработан как замена GIF, но его анимационная версия APNG (Animated PNG) была создана только в 2004 году и не была принята в качестве официального стандарта ISO.
  • Максимальный размер изображения в PNG теоретически ограничен только размером файла (до 2^31 пикселей в ширину и высоту), но на практике ограничен памятью и программным обеспечением.
  • PNG поддерживает метаданные в формате EXIF (Exchangeable Image File Format), но не все программы корректно их обрабатывают.

Источники

  • Спецификация PNG (ISO/IEC 15948:2003)
  • W3C Recommendation: PNG (Portable Network Graphics) Specification, Version 1.0
  • RFC 2083: PNG (Portable Network Graphics) Specification, Version 1.0
  • «PNG: The Definitive Guide» by Greg Roelofs, O'Reilly Media, 1999
  • Документация по формату PNG на сайте libpng.org

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →