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

PNG — формат сжатия растровых изображений

PNG (Portable Network Graphics, «переносимая графика для сети») — растровый формат хранения изображений с без потерь сжатием, созданный как замена устаревшему формату GIF. Основные характеристики: поддержка альфа-канала (полупрозрачности), 24-битный цвет (16,7 млн цветов), без потерь при повторном сжатии, открытая спецификация без патентных ограничений. Файлы PNG используют расширение .png и MIME-тип image/png.

История создания

Формат разработан в 1995 году рабочей группой PNG Development Group как ответ на обнаруженную патентную проблему. Компания Unisys и IBM владели патентом на алгоритм сжатия LZW, который использовался в GIF. Владельцы патента потребовали лицензионных платежей от разработчиков программного обеспечения, что вызвало обеспокоенность сообщества программистов.

Первая версия спецификации (0.95) появилась в октябре 1995 года. Формат быстро получил поддержку основных браузеров: Netscape Navigator 2.0 и Internet Explorer 4.0 поддерживали PNG ещё до выхода окончательной редакции стандарта. В 1996 году формат был официально утверждён как стандарт ISO/IEC 15948 (в редакции W3C — рекомендация от 1 октября 1996 года).

Технические особенности

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

Формат PNG основан на контейнере, построенном по принципу «чанков» (chunks). Каждый файл начинается с фиксированной 8-байтовой сигнатуры: 89 50 4E 47 0D 0A 1A 0A. Далее следуют блоки данных, каждый из которых состоит из длины (4 байта), типа (4 байта), содержимого и контрольной суммы CRC-32.

Основные типы чанков:

ТипНазначение
IHDRЗаголовок изображения (ширина, высота, глубина цвета, тип сжатия)
PLTEПалитра (для индексированных изображений)
IDATСжатые данные изображения
IENDКонец файла
tRNSДанные о прозрачности
tEXt / iTXt / zTXtМетаданные текстом

Сжатие

Сжатие в PNG основано на алгоритме DEFLATE — комбинации LZ77 и адаптивного Huffman-кодирования. Алгоритм не является запатентованным и свободно используется во множестве программных продуктов. Перед сжатием применяется фильтрация: каждая строка пикселей преобразуется одним из пяти фильтров (None, Sub, Up, Average, Paeth), что повышает эффективность DEFLATE.

Типы изображений

PNG поддерживает несколько типов пиксельных данных:

  • Truecolor — 24 бита на пиксель (8 бит на канал RGB);
  • Truecolor с альфа-каналом — 32 бита (RGBA);
  • Градации серого — 1, 2, 4, 8 или 16 бит;
  • Индексированный цвет — палитра до 256 цветов (аналог GIF).

Прозрачность

PNG поддерживает два механизма прозрачности:

  1. Binary transparency — один цвет из палитры или значения RGB объявляется полностью прозрачным (аналог GIF).
  2. Alpha-канал — каждый пиксель имеет значение прозрачности от 0 (полностью прозрачный) до 255 (полностью непрозрачный). Это позволяет создавать плавные градиенты прозрачности, что недоступно в GIF.

Применение

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

Для фотографий PNG, как правило, не оптимален: сжатие без потерь даёт файлы значительно большие, чем lossy-форматы (JPEG, WebP). В таких случаях предпочтительнее использовать форматы со сжатием с потерями.

Разновидности

  • APNG (Animated PNG) — расширение, добавляющее поддержку анимации. Разработано компанией Mozilla в 2008 году. Поддерживается браузерами Firefox, Chrome, Safari; в стандарт W3C не вошло.
  • MNG — формат анимированной многослойной графики, разработанный как замена анимированного GIF. Практического распространения не получил.
  • PNG-24 / PNG-8 — обиходные обозначения, соответствующие truecolor-изображениям и индексированному цвету соответственно.

Ограничения

PNG не поддерживает векторную графику (в отличие от SVG), CMYK-цветовое пространство (ограничение для полиграфии) и сжатие с потерями. Формат также не предназначен для хранения многослойных изображений (в отличие от TIFF или PSD).

Стандартизация

Спецификация формата поддерживается Консорциумом W3C и является международным стандартом ISO/IEC 15948:2003. Последняя редакция стандарта датируется 2003 годом; формат остаётся стабильным и не претерпевает существенных изменений.

Источники

  • ISO/IEC 15948:2003 — Information technology — Computer graphics and image processing — Portable Network Graphics (PNG)
  • Рекомендация W3C: PNG Specification (Second Edition)
  • RFC 2083 — PNG: Portable Network Graphics (T. Boutell, 1997)
  • Handbook of Image and Video Processing (A. Bovik, 2005)
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru