Переносимая сетевая графика - Portable Network Graphics

Переносимая сетевая графика

Демонстрация прозрачности PNG 1.png

Изображение PNG с 8-битным каналом прозрачности, наложенное на клетчатый фон, обычно используется в графическое программное обеспечение для обозначения прозрачности
Расширение имени файла
.png
Тип интернет-СМИ
изображение / png
Типовой кодPNGf
PNG
Единый идентификатор типа (UTI)public.png
Магическое число89 50 4e 47 0d 0a 1a 0a
РазработанГруппа развития ПНГ (передана в дар W3C )
изначальный выпуск1 октября 1996 г.; 24 года назад (1996-10-01)
Тип форматаБез потерь битовая карта формат изображения
Расширен доAPNG, JNG и MNG
СтандартISO /IEC 15948,[1] IETF RFC 2083
Открытый формат ?да

Переносимая сетевая графика (PNG, официально объявленный /пɪŋ/[2][3] ПИНГ, чаще произносится /ˌпяɛпˈя/[4] PEE-en-JEE ) это растровая графика файл формат что поддерживает сжатие данных без потерь. PNG был разработан как улучшенная, не запатентованная замена для Формат обмена графикой (GIF).

PNG поддерживает изображения на основе палитры (с палитрами 24-битных RGB или 32-битный RGBA цвета), оттенки серого изображения (с или без альфа-канал для прозрачности), а также полноцветные изображения RGB или RGBA, не основанные на палитре. Рабочая группа PNG разработала формат для передачи изображений на Интернет, а не для печати графики профессионального качества; поэтому не RGB цветовые пространства Такие как CMYK не поддерживаются. Файл PNG содержит одно изображение в расширяемой структуре куски, кодируя базовый пиксели и другую информацию, такую ​​как текстовые комментарии и проверки целостности задокументировано в RFC 2083.[5]

Файлы PNG используют расширение файла PNG или же PNG и назначены MIME тип СМИ изображение / png.[6]PNG был опубликован как информационный RFC 2083 в марте 1997 г. и как ISO / IEC 15948 в 2004 году.[1]

История и развитие

Мотивацией к созданию формата PNG послужило осознание в начале 1995 г. Лемпель – Зив – Велч (LZW) Сжатие данных алгоритм, используемый в Формат обмена графикой (GIF) формат был запатентованный к Unisys. Были также другие проблемы с форматом GIF, которые сделали замену желательной, в частности, его предел 256 цветов в то время, когда компьютеры с гораздо более продвинутыми дисплеями стали обычным явлением.

Обсуждение, предшествующее январю 1995 г., на группа новостей usenet "comp.graphics" с темой Мысли о замене файлов формата GIF, было много предложений, которые позже станут частью формата файлов PNG. В этой ветке Оливер Фромми, автор популярной JPEG зритель QPEG, предложил имя PING, в конечном итоге превратившись в PNG, рекурсивный акроним смысл PING - это не GIF, а также .png расширение.[7]

Хотя GIF позволяет анимация было решено, что PNG должен быть форматом с одним изображением.[8] В 2001 году разработчики PNG опубликовали Сетевая графика с несколькими изображениями (MNG) с поддержкой анимации. MNG достигла умеренной поддержки приложений, но ее недостаточно для основных веб-браузеров и не используется дизайнерами или издателями веб-сайтов. В 2008 г. Mozilla разработчики опубликовали Анимированная переносимая сетевая графика (APNG) формат со схожими целями. APNG - это формат, который изначально поддерживается Геккон - и Престо -на основе веб-браузеров, а также часто используется для эскизов на Sony PlayStation портативный системы (с использованием обычного расширения файла PNG). В 2017 году браузеры на базе Chromium приняли APNG поддерживать. В январе 2020 г. Microsoft Edge стал Хром основаны, таким образом унаследовав поддержку APNG. Благодаря этому все основные браузеры теперь поддерживают APNG.

  • 1 октября 1996 г .: была выпущена версия 1.0 спецификации PNG, позже появившаяся как RFC 2083. Он стал W3C Рекомендация от 1 октября 1996 г.
  • 31 декабря 1998 г .: Выпущена версия 1.1 с небольшими изменениями и добавлением трех новых частей.
  • 11 августа 1999: Выпущена версия 1.2 с добавлением одного дополнительного фрагмента.
  • 10 ноября 2003 г .: PNG стал международным стандартом (ISO /IEC 15948: 2003). Эта версия PNG незначительно отличается от версии 1.2 и не добавляет новых фрагментов.
  • 3 марта 2004 г .: ИСО / МЭК 15948: 2004.[1]


Рабочая группа PNG

Исходная спецификация PNG была создана специальной группой экспертов и энтузиастов компьютерной графики. Обсуждения и решения о формате проводились по электронной почте. Первоначальные авторы перечислены на RFC 2083 находятся:[9]

Формат файла

PNG изображение PNG-Градиент.png просмотрено с шестнадцатеричный редактор

Заголовок файла

Файл PNG начинается с цифры 8-байт подпись[10] (см. изображение шестнадцатеричного редактора справа):

Значения (шестнадцатеричный )Цель
89Установлен высокий бит для обнаружения систем передачи, не поддерживающих 8-битные данные и уменьшить вероятность того, что текстовый файл будет ошибочно интерпретирован как PNG, и наоборот.
50 4Э 47В ASCII, письма PNG, позволяя человеку легко определить формат, если он просматривается в текстовом редакторе.
0D 0AА ДОС -стиль конец строки (CRLF) для обнаружения завершения преобразования данных в строке DOS-Unix.
Байт, который останавливает отображение файла в DOS, когда команда тип был использован - конец файла персонаж.
0AОкончание строки в стиле Unix (LF) для обнаружения преобразования окончания строки Unix-DOS.

"Куски" в файле

После заголовка идет серия куски,[11] каждый из которых передает определенную информацию об изображении. Чанки заявляют о себе как критический или же вспомогательный, и программа, обнаружившая вспомогательный фрагмент, который она не понимает, может спокойно игнорировать его. Эта структура уровня хранения на основе фрагментов, аналогичная по концепции формат контейнера или чтобы Amiga's МКФ, предназначен для расширения формата PNG при сохранении совместимости со старыми версиями - он обеспечивает прямая совместимость, и та же файловая структура (с другой подписью и фрагментами) используется в связанном MNG, JNG, и APNG форматы.

Чанк состоит из четырех частей: длина (4 байта,[12] прямой порядок байтов ), тип / имя блока (4 байта[13]), данные фрагмента (длина в байтах) и CRC (циклический избыточный код / ​​контрольная сумма; 4 байта[12]). CRC - это сетевой порядок байтов. CRC-32 вычисляется по типу блока и данным блока, но не по длине.

ДлинаТип чанкаДанные блокаCRC
4 байта4 байтаДлина байты4 байта

Типы чанков обозначаются четырехбуквенными чувствительный к регистру Тип / имя ASCII; сравнивать FourCC. Регистр различных букв в имени (бит 5 числового значения символа) является битовое поле что обеспечивает декодер с некоторой информацией о природе блоков, которые он не распознает.

Регистр первой буквы указывает, является ли фрагмент критическим или нет. Если первая буква в верхнем регистре, фрагмент важен; в противном случае фрагмент является вспомогательным. Критические блоки содержат информацию, необходимую для чтения файла. Если декодер обнаруживает критический фрагмент, который он не распознает, он должен прервать чтение файла или предоставить пользователю соответствующее предупреждение.

Регистр второй буквы указывает, является ли блок "общедоступным" (либо в спецификации, либо в реестре общедоступных блоков специального назначения) или "частным" (не стандартизованным). Прописные буквы являются общедоступными, а строчные - частными. Это гарантирует, что общедоступные и частные имена блоков никогда не будут конфликтовать друг с другом (хотя два частных имени блоков могут конфликтовать).

Третья буква должна быть прописной, чтобы соответствовать спецификации PNG. Он зарезервирован для будущего расширения. Декодеры должны обрабатывать фрагмент с третьей буквой нижнего регистра так же, как и любой другой нераспознанный фрагмент.

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

Критические блоки

Декодер должен уметь интерпретировать критические фрагменты для чтения и рендеринга файла PNG.

  • IHDR должен быть первым чанком; он содержит (в этом порядке) ширину изображения (4 байта); высота (4 байта); разрядность (1 байт, значения 1, 2, 4, 8 или 16); тип цвета (1 байт, значения 0, 2, 3, 4 или 6); метод сжатия (1 байт, значение 0); метод фильтрации (1 байт, значение 0); и метод чередования (1 байт, значения 0 "без чередования" или 1 "Adam7 чередование ") (всего 13 байтов данных).[14] Как указано в Консорциум World Wide Web, битовая глубина определяется как «количество бит на выборку или на индекс палитры (не на пиксель)».[14]
  • PLTE содержит палитра: список цветов.
  • IDAT содержит изображение, которое может быть разделено на несколько частей IDAT. Такое разделение немного увеличивает размер файла, но позволяет генерировать PNG в потоковом режиме. Блок IDAT содержит фактические данные изображения, которые являются выходным потоком алгоритма сжатия.[15]
  • IEND отмечает конец изображения; поле данных блока IEND имеет 0 байт / пусто.[16]

В PLTE кусок необходим для цветотипа 3 (индексированный цвет ). Он не является обязательным для типов цвета 2 и 6 (истинный цвет и истинный цвет с альфа-каналом) и не должен отображаться для типов цвета 0 и 4 (оттенки серого и оттенки серого с альфа-каналом).

Вспомогательные блоки

Другие атрибуты изображения, которые могут быть сохранены в файлах PNG, включают: гамма значения, цвет фона и текстовые метаданные Информация. PNG также поддерживает Управление цветом за счет включения ICC цветовое пространство профили.[17]

  • bKGD дает цвет фона по умолчанию. Он предназначен для использования, когда нет лучшего выбора, например, в автономных средствах просмотра изображений (но не в веб-браузерах; подробнее см. Ниже).
  • cHRM дает цветность координаты дисплея праймериз и белая точка.
  • dSIG предназначен для хранения цифровых подписей.[18]
  • eXIf магазины Exif метаданные.[19]
  • ГАМА указывает гамма. Чанк gAMA содержит только 4 байта, и его значение представляет собой значение гаммы, умноженное на 100 000; например, значение гаммы 1 / 3,4 вычисляется как 29411,7647059 ((1 / 3,4) * (100 000)) и преобразуется в целое число (29412) для хранения.[20]
  • СПИСОК может хранить гистограмму или общее количество каждого цвета в изображении.
  • iCCP является Цветовой профиль ICC.
  • iTXt содержит ключевое слово и UTF-8 текст, с кодировками для возможного сжатия и переводы, отмеченные языковой тег. В Платформа расширяемых метаданных (XMP) использует этот фрагмент с ключевым словом XML: com.adobe.xmp
  • pHYs содержит предполагаемый размер пикселя (или соотношение сторон пикселя); pHYs содержит «Пикселей на единицу, ось X» (4 байта), «Пикселей на единицу, ось Y» (4 байта) и «Спецификатор единицы» (1 байт), всего 9 байтов.[21]
  • sBIT (значащие биты) указывают точность цветопередачи исходных данных; этот блок содержит от 1 до 13 байтов.[22][23][24]
  • sPLT предлагает палитру для использования, если полный диапазон цветов недоступен.
  • sRGB указывает, что стандарт цветовое пространство sRGB используется; блок sRGB содержит только 1 байт, который используется для «цели рендеринга» (4 значения - 0, 1, 2 и 3 - определены для цели рендеринга).[25][26]
  • STER блок индикатора стереоизображения для стереоскопический изображений.[27]
  • текст может хранить текст, который может быть представлен в ИСО / МЭК 8859-1, с одним ключ-значение пара для каждого фрагмента. «Ключ» должен содержать от 1 до 79 символов. Разделитель - это нулевой символ. «Значение» может иметь любую длину, включая от нуля до максимально допустимого размера блока за вычетом длины ключевого слова и разделителя. Ни «ключ», ни «значение» не могут содержать нулевой символ. Начальные и конечные пробелы также запрещены.
  • время сохраняет время последнего изменения изображения.
  • tRNS содержит информацию о прозрачности. Для проиндексированных изображений он хранит значения альфа-канала для одной или нескольких записей палитры. Для полноцветных изображений и изображений в градациях серого он хранит значение одного пикселя, которое следует рассматривать как полностью прозрачное.
  • zTXt содержит сжатый текст (и маркер метода сжатия) с теми же ограничениями, что и текст.

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

Формат пикселей

Тип цвета PNG[28]
Тип цветаканалыБит на канал
124816
Проиндексировано11248
Оттенки серого1124816
Оттенки серого и альфа21632
Истинный цвет32448
Truecolor и альфа43264

Пиксели в изображениях PNG - это числа, которые могут быть либо индексами выборочных данных в палитра или сами образцы данных. Палитра - это отдельная таблица, содержащаяся в блоке PLTE. Данные образца для одного пикселя состоят из кортежа от одного до четырех чисел. Независимо от того, представляют ли пиксельные данные индексы палитры или явные значения выборок, числа называются каналы и каждое число на изображении закодировано в идентичном формате.

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

Количество каналов зависит от того, является ли изображение полутоновым или цветным, и есть ли у него альфа-канал. PNG позволяет использовать следующие комбинации каналов, называемые цветотип.

0 (0002)оттенки серого
2 (0102)красный, зеленый и синий: rgb / truecolor
3 (0112)indexed: канал, содержащий индексы в палитре цветов
4 (1002)оттенки серого и альфа: уровень непрозрачность для каждого пикселя
6 (1102)красный, зеленый, синий и альфа

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

Типы цветов PNG
Цвет
тип
ИмяДвоичныйМаски
 АCп
0Оттенки серого0000 
2Истинный цвет0010цвет
3Проиндексировано0011цветовая палитра
4Оттенки серого и альфа0100альфа
6Truecolor и альфа0110альфа, цвет
  • битовое значение 1: данные изображения хранят индексы палитры. Это действительно только в сочетании со значением бита 2;
  • битовое значение 2: образцы изображений содержат три канала кодирования данных трехцветный цвета, в противном случае образцы изображений содержат один канал кодирования данных относительная яркость,
  • битовое значение 4: образцы изображений также содержат альфа-канал, выраженный как линейная мера непрозрачности пикселя. Это недопустимо в сочетании со значением бита 1.

При использовании индексированных цветных изображений в палитре всегда хранятся трехцветные цвета с глубиной 8 бит на канал (24 бита на запись палитры). Дополнительно может быть включен необязательный список 8-битных альфа-значений для записей палитры; если они не включены или короче палитры, остальные записи палитры считаются непрозрачными. В палитре не должно быть больше записей, чем позволяет глубина цвета изображения, но может быть меньше (например, если изображение с 8-битными пикселями использует только 90 цветов, то ему не нужны записи палитры для всех 256 цветов). Палитра должна содержать записи для всех значений пикселей, присутствующих в изображении.

Стандарт позволяет индексированным цветным PNG иметь 1, 2, 4 или 8 бит на пиксель; Полутоновые изображения без альфа-канала могут иметь 1, 2, 4, 8 или 16 бит на пиксель. Для всего остального используется битовая глубина на канал 8 или 16. Допустимые комбинации приведены в таблице выше. Стандарт требует, чтобы декодеры могли читать все поддерживаемые цветовые форматы, но многие редакторы изображений могут создавать только их небольшое подмножество.

Прозрачность изображения

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

Предполагается, что сканирование значений пикселей для обеспечения двоичной прозрачности должно выполняться до любого уменьшения цвета, чтобы избежать непреднамеренно прозрачных пикселей. Это, скорее всего, создаст проблему для систем, которые могут декодировать изображения с 16-битным каналом (что требуется для соответствия спецификации), но выводят только 8 бит на канал (норма для всех систем, кроме самых высоких). .

Альфа место хранения может быть "связанным" ("предварительно умноженный ") или" несвязанный ", но стандартизированный PNG[29] на "несвязанном" ("без предварительного умножения") альфе, что означает, что изображения не являются альфа закодированный; излучения, представленные в RGB, не являются выбросами на уровне пикселей. Это означает, что операция over умножит выбросы RGB на альфа и не сможет правильно представить излучение и окклюзию.

Сжатие

Пример с несколькими типами содержимого изображения
Представление битовой стоимости на пиксель для указанного выше файла PNG (красный = дорого, синий = дешево)

PNG использует двухэтапный процесс сжатия:

  • предварительное сжатие: фильтрация (прогноз)
  • сжатие: ВЫПУСКАТЬ

PNG использует ВЫПУСКАТЬ, непатентованный сжатие данных без потерь алгоритм включая сочетание LZ77 и Кодирование Хаффмана. Разрешенная лицензия DEFLATE, такие как zlib, широко доступны.

По сравнению с форматами с сжатие с потерями Такие как JPG, выбор параметра сжатия выше среднего задерживает обработку, но часто не приводит к значительному уменьшению размера файла.

Фильтрация

Метод фильтра PNG 0 может использовать данные в пикселях A, B и C для прогнозирования значения X.
PNG с 256 цветами, что составляет всего 251 байт с предварительным фильтром. То же изображение в формате GIF будет более чем в тринадцать раз больше.

Перед применением DEFLATE данные преобразуются с помощью метода прогнозирования: один метод фильтрации используется для всего изображения, а для каждой строки изображения тип фильтра выбирается для преобразования данных для повышения их сжимаемости.[30] Тип фильтра, используемый для строки сканирования, добавляется к строке сканирования, чтобы включить встроенную декомпрессию.

В текущей спецификации PNG есть только один метод фильтрации (обозначенный как метод 0), и поэтому на практике единственный выбор - какой тип фильтра применить к каждой строке. Для этого метода фильтр предсказывает значение каждого пикселя на основе значений предыдущих соседних пикселей и вычитает предсказанный цвет пикселя из фактического значения, как в DPCM. Линия изображения, отфильтрованная таким образом, часто более сжимаема, чем линия необработанного изображения, особенно если она похожа на строку выше, поскольку отличия от предсказания обычно будут сгруппированы вокруг 0, а не распространяться по всем возможным значениям изображения. Это особенно важно при связывании отдельных строк, поскольку DEFLATE не понимает, что изображение является двухмерным объектом, а вместо этого просто видит данные изображения как поток байтов.

Есть пять типов фильтров для метода фильтрации 0; каждый тип предсказывает значение каждого байта (данных изображения до фильтрации) на основе соответствующего байта пикселя слева (А), пиксель выше (B), а пиксель вверху и слева (C) или их комбинацию, и кодирует разница между прогнозируемым значением и фактическим значением. Фильтры применяются к байтовым значениям, а не к пикселям; значения пикселей могут быть одним или двумя байтами или несколькими значениями на байт, но никогда не пересекают границы байта. Типы фильтров:[31]

Тип байтИмя фильтраПрогнозируемое значение
0НиктоНоль (чтобы необработанное значение байта проходило без изменений)
1SubБайт А (Слева)
2ВверхБайт B (над)
3СреднийСреднее байтов А и B, округлено в меньшую сторону
4PaethА, B, или же C, в зависимости от того, что ближе всего к п = А + BC

Фильтр Паэта основан на алгоритме Алан В. Пэт.[32]Сравните с версией DPCM используется в JPEG без потерь, и к дискретное вейвлет-преобразование используя окна 1 × 2, 2 × 1 или (для предсказателя Паэта) 2 × 2 и Вейвлеты Хаара.

Сжатие дополнительно улучшается за счет адаптивного выбора типов фильтров для каждой строки. Это улучшение и эвристический метод его реализации, обычно используемый в программах для записи PNG, были созданы Ли Дэниел Крокер, который опробовал методы на многих изображениях при создании формата;[33] выбор фильтра является компонентом оптимизации размера файла, как обсуждается ниже.

Если используется чересстрочная развертка, каждый этап чересстрочной развертки фильтруется отдельно, что означает, что изображение может быть визуализировано постепенно по мере приема каждого этапа; однако чередование обычно делает сжатие менее эффективным.

Переплетение

Иллюстрация чересстрочной развертки Adam7 на изображении 16 × 16.

PNG предлагает дополнительный двухмерный 7-проходной переплетение схема - Алгоритм Adam7. Это более сложная схема, чем одномерная четырехпроходная схема GIF, и позволяет видеть более четкое изображение с низким разрешением на более ранней стадии передачи, особенно если используются такие алгоритмы интерполяции, как бикубическая интерполяция используются.[34]

Однако 7-проходная схема имеет тенденцию к снижению сжимаемости данных больше, чем более простые схемы.

Анимация

Файл APNG (анимированный PNG) (отображается как статическое изображение в некоторые веб-браузеры )

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

Сложность MNG привела к предложению APNG от разработчиков Mozilla Foundation. Он основан на PNG, поддерживает анимацию и проще, чем MNG. APNG предлагает откат к отображению одного изображения для декодеров PNG, которые не поддерживают APNG. Однако ни один из этих форматов в настоящее время широко не поддерживается. APNG поддерживается в Fire Fox 3.0 и выше, Бледная луна (все версии) и Опера 9.5,[35] но поскольку Opera изменила свой механизм компоновки на Мигать, поддержка была прекращена. Последняя версия Сафари на iOS 8 и Safari 8 для OS X Йосемити поддержка APNG.[36] В Chromium 59.0 добавлена ​​поддержка APNG,[37][38] затем Opera добавила обратно в 46.0.[39] В апреле 2007 года группа компаний PNG решила не использовать APNG.[40] Обсуждались несколько альтернатив: ANG, aNIM / mPNG, «PNG в GIF» и его подмножество «RGBA в GIF».[41]

Примеры

Структура очень простого файла PNG
89 50 4E 47 0D 0A 1A 0A
PNG подпись
IHDR
Заголовок изображения
IDAT
Данные изображения
IEND
Конец изображения
Содержимое минимального файла PNG, представляющего один красный пиксель
HexКак персонажи

89 50 4E 47 0D 0A 1A 0A 00 00 00 0D 49 48 44 52
00 00 00 01 00 00 00 01 08 02 00 00 00 90 77 53
DE 00 00 00 0C 49 44 41 54 08 D7 63 F8 CF C0 00
00 03 01 01 00 18 DD 8D B0 00 00 00 00 49 45 4E
44 АЕ 42 60 82

.PNG ........ IHDR
.............. wS
..... ИДАТ..к ....
............. IEN
D.B`.

Показано в моде шестнадцатеричные редакторы, со значениями байтов слева, показанными в шестнадцатеричный формат, а справа их эквивалентные символы из ISO-8859-1 с нераспознанными и контрольными символами, замененными точками. Кроме того, подпись PNG и отдельные фрагменты отмечены цветом. Обратите внимание, что их легко идентифицировать из-за их удобочитаемых имен типов (в этом примере PNG, IHDR, IDAT и IEND).

Преимущества

Причины использования настоящего международного стандарта могут быть следующими:

  • Портативность: Передача не зависит от программной и аппаратной платформы.
  • Полнота: возможно представление изображений в истинном цвете, индексированных цветах и ​​оттенках серого.
  • Последовательное кодирование и декодирование: позволяет генерировать и считывать потоки данных последовательно, то есть формат потока данных используется для генерации и визуализации изображений в данный момент посредством последовательной связи.
  • Прогрессивная презентация: чтобы иметь возможность передавать потоки данных, которые изначально являются приближением всего изображения и постепенно улучшаются по мере получения потока данных.
  • Устойчивость к ошибкам передачи: правильно определяет ошибки передачи потока данных.
  • Без потерь: Без потерь: фильтрация и сжатие сохраняют всю информацию.
  • Эффективность: любое прогрессивное представление, сжатие и фильтрация изображений требует эффективного декодирования и представления.
  • Сжатие: изображения можно сжимать эффективно и последовательно.
  • Легкость: реализация стандарта проста.
  • Взаимозаменяемость: любой декодер PNG, соответствующий стандартам, может читать все потоки данных PNG.
  • Гибкость: разрешает будущие расширения и частные добавления, не затрагивая предыдущий пункт.
  • Свобода правовых ограничений: используемые алгоритмы бесплатны и доступны.

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

Формат обмена графикой (GIF)

  • На маленьких изображениях Гифка может достичь большего сжатия, чем PNG (см. раздел на размер файла, ниже).
  • На большинстве изображений, за исключением указанного выше случая, файл GIF имеет больший размер, чем индексированное изображение PNG.
  • PNG предоставляет гораздо более широкий диапазон параметров прозрачности, чем GIF, включая альфа-канал прозрачность.
  • В то время как GIF ограничен 8-битным индексированный цвет, PNG обеспечивает гораздо более широкий диапазон глубины цвета, включая 24-битный (8 бит на канал) и 48-битный (16 бит на канал) истинный цвет, что обеспечивает большую точность цветопередачи, более плавное затухание и т. д.[42] Когда добавляется альфа-канал, возможно до 64 бит на пиксель (до сжатия).
  • При преобразовании изображения из формата PNG в GIF качество изображения может пострадать из-за постеризация если изображение PNG имеет более 256 цветов.
  • GIF изначально поддерживает анимированные изображения. PNG поддерживает анимацию только через неофициальные расширения (см. раздел по анимации, над).

Изображения PNG менее широко поддерживаются старыми браузерами. В частности, IE6 имеет ограниченную поддержку PNG.[43]

JPEG

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

В JPEG (Joint Photographic Experts Group) формат позволяет создавать файлы меньшего размера, чем PNG для фотографический (и фото-подобные) изображения, поскольку JPEG использует метод кодирования с потерями специально разработан для данных фотографических изображений, в которых обычно преобладают мягкие низкоконтрастные переходы, а также количество шума или подобных нерегулярных структур. Использование PNG вместо высококачественного JPEG для таких изображений приведет к значительному увеличению размера файла с незначительный повышение качества. Для сравнения, при сохранении изображений, содержащих текст, штриховые рисунки или графику - изображения с резкими переходами и большими областями сплошного цвета - формат PNG может сжимать данные изображения больше, чем JPEG. Кроме того, PNG не содержит потерь, а JPEG создает визуальные артефакты вокруг высококонтрастных областей. (Такие артефакты зависят от настроек, используемых при сжатии JPG; они могут быть весьма заметны при использовании настройки низкого качества [высокое сжатие].) Если изображение содержит как резкие переходы, так и фотографические части, необходимо делать выбор между два эффекта. JPEG не поддерживает прозрачность.

Сжатие JPEG с потерями также страдает от потеря поколения, где многократное декодирование и перекодирование изображения для его повторного сохранения каждый раз вызывает потерю информации, ухудшая изображение. Этого не происходит при повторном просмотре или копировании, а только в том случае, если файл редактируется и сохраняется заново. Поскольку PNG не содержит потерь, он подходит для хранения изображений для редактирования. Хотя PNG достаточно эффективен при сжатии фотографических изображений, существуют форматы сжатия без потерь, разработанные специально для фотографических изображений. WebP и Adobe DNG (цифровой негатив) например. Однако эти форматы либо широко не поддерживаются, либо являются собственностью. Изображение может быть сохранено без потерь и преобразовано в формат JPEG только для распространения, что исключает потерю генерации.

Хотя спецификация PNG явно не включает стандарт для встраивания Exif данные изображения из таких источников, как цифровые камеры, предпочтительный метод для встраивания данных EXIF ​​в PNG - использовать некритическую метку вспомогательного блока eXIf.[44]

Ранние веб-браузеры не поддерживали изображения PNG; JPEG и GIF были основными форматами изображений. JPEG обычно использовался при экспорте изображений, содержащих градиенты, для веб-страниц из-за ограниченной глубины цвета GIF. Однако сжатие JPEG приводит к небольшому размытию градиента. Формат PNG воспроизводит градиент с максимальной точностью для заданной глубины цвета, сохраняя при этом небольшой размер файла. PNG стал оптимальным выбором для небольших градиентных изображений, поскольку поддержка формата веб-браузером улучшилась. Для отображения градиентов в современных браузерах совсем не нужны изображения, так как градиенты можно создавать с помощью CSS.

JPEG-LS

JPEG-LS формат изображения Объединенная группа экспертов в области фотографии, хотя он гораздо менее широко известен и поддерживается, чем другой формат JPEG с потерями, описанный выше. Он напрямую сопоставим с PNG,[требуется разъяснение ] и имеет стандартный набор тестовых изображений.[45] В Waterloo Repertoire ColorSet, стандартном наборе тестовых изображений (не связанных с набором тестов на соответствие JPEG-LS), JPEG-LS обычно работает лучше, чем PNG, на 10–15%, но с некоторыми изображениями PNG работает значительно лучше, порядка 50–75%.[46] Таким образом, если оба этих формата являются вариантами и размер файла является важным критерием, следует учитывать оба этих формата в зависимости от изображения.

TIFF

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

Наиболее распространенный алгоритм сжатия без потерь общего назначения, используемый с TIFF, - это Лемпель – Зив – Велч (LZW). Этот метод сжатия, также используемый в GIF, был защищен патентами до 2003 года. TIFF также поддерживает алгоритм сжатия, используемый PNG (т. Е. Метка сжатия 000816 'Adobe -style ') со средним использованием и поддержкой приложениями. TIFF также предлагает специальные алгоритмы сжатия без потерь, такие как CCITT Группа IV, который может сжимать двухуровневые изображения (например, факсы или черно-белый текст) лучше, чем алгоритм сжатия PNG.

PNG поддерживает только альфа без предварительного умножения[29] тогда как TIFF также поддерживает "связанный" (предварительно умноженный) альфа.

Поддержка программного обеспечения

Официальный эталонная реализация формата PNG - это библиотека программирования libpng.[47] Он публикуется как бесплатное программное обеспечение на условиях разрешающая лицензия свободных программ. Следовательно, он обычно является важной системной библиотекой в ​​бесплатных операционных системах.

Поддержка редактора растровой графики для PNG

Формат PNG широко поддерживается графическими программами, включая Adobe Photoshop, Corel с Фото-краска и Покрасочная мастерская Pro, то GIMP, GraphicConverter, Геликонный фильтр, ImageMagick, Inkscape, IrfanView, Редактор пиксельных изображений, Paint.NET и Xara Фото и графический дизайнер и много других. Некоторые программы в комплекте с популярными операционные системы которые поддерживают PNG включают Microsoft с Краска и яблоко с Фото /iPhoto и Предварительный просмотр, причем GIMP часто поставляется вместе с популярными Linux раздачи.

Adobe Fireworks (ранее Macromedia ) использует PNG в качестве собственного формата файла, позволяя другим редакторам изображений и утилитам предварительного просмотра просматривать сведенное изображение. Однако Fireworks по умолчанию также хранит метаданные для слоев, анимации, векторных данных, текста и эффектов. Такие файлы не должны распространяться напрямую. Вместо этого Fireworks может экспортировать изображение как оптимизированный PNG без дополнительных метаданных для использования на веб-страницах и т. Д.[нужна цитата ]

Поддержка PNG веб-браузером

Поддержка PNG впервые появилась в Internet Explorer 4.0b1 (32-бит только для NT) и в Netscape 4.04.[48]

Несмотря на призывы Фонд свободного программного обеспечения[49] и Консорциум World Wide Web (W3C),[50] такие инструменты, как gif2png,[51] и кампании, такие как "Записать все гифки",[52] Принятие PNG на веб-сайтах происходило довольно медленно из-за поздней поддержки в Internet Explorer, особенно в отношении прозрачности.[53]

PNG-совместимые браузеры: Apple Сафари, Гугл Хром, Mozilla Firefox, Опера, Камино, Internet Explorer 7 (еще много вопросов),[54] Internet Explorer 8 (все еще есть проблемы), Internet Explorer 9 и много других. Для полного сравнения см. Сравнение веб-браузеров (поддержка формата изображения).

В частности, версии Internet Explorer (Windows) ниже 9.0 имеют множество проблем, которые не позволяют правильно отображать изображения PNG.[54]

  • 4.0 вылетает на больших фрагментах PNG.[55]
  • 4.0 не включает функцию просмотра файлов .png,[56] но есть исправление реестра.[54]
  • 5.0 и 5.01 не поддерживают OBJECT.[57]
  • 5.01 печатает изображения палитры с черным (или темно-серым) фоном под Windows 98, иногда с радикально измененными цветами.[58]
  • 6.0 не отображает изображения PNG размером 4097 или 4098 байт.[59]
  • 6.0 не может открыть файл PNG, содержащий один или несколько блоков IDAT нулевой длины. Впервые эта проблема была исправлена ​​в обновлении безопасности 947864 (MS08-024). Дополнительные сведения см. В этой статье базы знаний Майкрософт: 947864 MS08-024: Накопительное обновление безопасности для Internet Explorer.[60]
  • 6.0 иногда полностью теряет возможность отображения PNG, но есть разные исправления.[61]
  • 6.0 и ниже не поддерживают прозрачность альфа-канала (вместо этого будет отображаться цвет фона по умолчанию).[62][63][64]
  • 7.0 и ниже не могут сочетать 8-битную альфа-прозрачность И непрозрачность элемента (CSS - filter: Alpha (opacity = xx)) без заливки частично прозрачных участков черным цветом.[65]
  • 8.0 и ниже имеют несовместимую / неработающую поддержку гаммы.[54]
  • 8.0 и ниже не поддерживают цветокоррекцию.[54]

Поддержка операционной системой значков PNG

Иконки PNG поддерживаются в большинстве дистрибутивов Linux по крайней мере с 1999 года в таких средах рабочего стола, как ГНОМ.[66] В 2006 г. Майкрософт Виндоус поддержка иконок PNG была введена в Виндоус виста.[67] Значки PNG поддерживаются в AmigaOS 4, AROS, macOS, iOS и MorphOS также. Кроме того, Android широко использует PNG.

Размер файла и программное обеспечение для оптимизации

Размер файла PNG может существенно различаться в зависимости от того, как он закодирован и сжат; это обсуждается, и ряд советов дан в PNG: полное руководство.[46]

По сравнению с GIF

В сравнении с Гифка файлов, файл PNG с той же информацией (256 цветов, без вспомогательных фрагментов / метаданных), сжатый эффективным компрессором, обычно меньше, чем изображение в формате GIF. В зависимости от файла и компрессора PNG может варьироваться от несколько меньшего (10%) до значительно меньшего (50%) и несколько большего (5%), но редко бывает значительно больше.[46] для больших изображений. Это связано с производительностью PNG. ВЫПУСКАТЬ по сравнению с GIF LZW, и потому что добавленный уровень предварительного сжатия прогнозных фильтров PNG учитывает структуру 2-мерного изображения для дальнейшего сжатия файлов; поскольку отфильтрованные данные кодируют различия между пикселями, они будут иметь тенденцию к кластеризации ближе к 0, а не распределяться по всем возможным значениям, и, следовательно, их легче сжимать с помощью DEFLATE. Однако некоторые версии Adobe Photoshop, CorelDRAW и MS Paint обеспечивают плохое сжатие PNG, создавая впечатление, что GIF более эффективен.[46]

Факторы размера файла

Файлы PNG различаются по размеру из-за ряда факторов:

глубина цвета
Глубина цвета может составлять от 1 до 64 бит на пиксель.
вспомогательные части
PNG поддерживает метаданные - это может быть полезно для редактирования, но не обязательно для просмотра, как на веб-сайтах.
переплетение
Поскольку каждый проход алгоритма Adam7 фильтруется отдельно, это может увеличить размер файла.[46]
фильтр
На этапе предварительного сжатия каждая строка фильтруется прогнозирующим фильтром, который может изменяться от строки к строке. Поскольку окончательный шаг DEFLATE работает с отфильтрованными данными всего изображения, нельзя оптимизировать эту строку за строкой; Таким образом, выбор фильтра для каждой строки потенциально очень разнообразен, хотя эвристика существует.[примечание 1]
сжатие
С дополнительными вычислениями компрессоры DEFLATE могут создавать файлы меньшего размера.

Таким образом, существует компромисс размера файла между высокой глубиной цвета, максимальными метаданными (включая информацию о цветовом пространстве вместе с информацией, которая не влияет на отображение), чересстрочной разверткой и скоростью сжатия, которые все дают большие файлы с меньшей глубиной цвета, меньшим количеством или без вспомогательных фрагментов, без чередования и настроенной, но требующей больших вычислительных ресурсов фильтрации и сжатия. Для разных целей выбираются разные компромиссы: максимальный файл может быть лучшим для архивирования и редактирования, тогда как урезанный файл может быть лучше для использования на веб-сайте, и такое же быстрое, но плохое сжатие предпочтительнее при многократном редактировании и сохранении файл, хотя медленное, но высокое сжатие предпочтительнее, когда файл стабилен: при архивировании или публикации. Чередование - это компромисс: он значительно ускоряет ранний рендеринг больших файлов (улучшает задержку), но может увеличить размер файла (уменьшить пропускную способность) для небольшого выигрыша, особенно для небольших файлов.[46]

Сжатие PNG с потерями

Хотя PNG является форматом без потерь, кодировщики PNG могут предварительно обрабатывать данные изображения с потерями для улучшения сжатия PNG. Например, квантование полноцветного PNG до 256 цветов позволяет использовать индексированный цветовой тип для вероятного уменьшения размера файла.[68]

Программное обеспечение для редактирования изображений

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

Многие графические программы (например, Apple Предварительный просмотр программное обеспечение) сохраняйте PNG с большим количеством метаданные и данные цветокоррекции, которые обычно не нужны для Интернет просмотр. Неоптимизированные файлы PNG из Adobe Fireworks также печально известны этим, поскольку содержат параметры, позволяющие сделать изображение доступным для редактирования в поддерживаемых редакторах. Кроме того, CorelDRAW (по крайней мере версия 11) иногда создает файлы PNG, которые невозможно открыть в Internet Explorer (версии 6–8).

Adobe Photoshop В CS Suite производительность файлов PNG улучшилась при использовании функции «Сохранить для Интернета» (которая также позволяет явно использовать PNG / 8).

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

К другим примечательным примерам плохих компрессоров PNG относятся:

  • Microsoft Paint для Windows XP
  • Microsoft Picture It! Фото Премиум 9

Плохое сжатие увеличивает размер файла PNG, но не влияет на качество изображения или совместимость файла с другими программами.

Когда глубина цвета истинный цвет изображение уменьшается до 8-битной палитры (как в GIF), итоговые данные изображения обычно намного меньше. Таким образом, полноцветный PNG обычно больше, чем GIF с уменьшенным цветом, хотя PNG может хранить версию с уменьшенным цветом как файл с палитрой сопоставимого размера. И наоборот, некоторые инструменты при сохранении изображений в формате PNG автоматически сохраняют их как истинные цвета, даже если исходные данные используют только 8-битный цвет, что приводит к излишнему раздуванию файла.[46] Оба фактора могут привести к неправильному представлению о том, что файлы PNG больше, чем эквивалентные файлы GIF.

Инструменты оптимизации

Доступны различные инструменты для оптимизации файлов PNG; они делают это:

  • (необязательно) удаление дополнительных фрагментов,
  • уменьшение глубины цвета:
    • используйте палитру (вместо RGB), если изображение имеет 256 или меньше цветов,
    • используйте меньшую палитру, если изображение имеет 2, 4 или 16 цветов, или
    • (необязательно) отбросить с потерями некоторые данные в исходном изображении,
  • оптимизация построчного выбора фильтра, и
  • оптимизация сжатия DEFLATE.

Список инструментов

  • pngcrush является старейшим из популярных оптимизаторов PNG. Он позволяет проводить несколько испытаний выбора фильтра и аргументов сжатия и, наконец, выбирает наименьший из них. Эта рабочая модель используется практически во всех оптимизаторах png.
  • OptiPNG был вдохновлен pngcrush, но выполняет итерацию по более широкому диапазону параметров сжатия и выполняет испытания в памяти для более быстрого выполнения.[69] Основная цель OptiPNG - уменьшить размер PNG IDAT. поток данных пробуя различные методы фильтрации и сжатия. Он также выполняет автоматическое уменьшение глубины цвета, типа цвета и цветовой палитры, где это возможно, и может исправить некоторые ошибки целостности данных во входных файлах. (pngcrush имеет возможность уменьшить цвет в более поздних версиях.)
  • advpng и аналогичная утилита advdef в AdvanceCOMP пакет повторно сожмите PNG IDAT. В зависимости от выбранного уровня сжатия применяются различные реализации DEFLATE, различающиеся скоростью и размером файла: zlib на уровне 1, libdeflate на уровне 2, 7-молния с LZMA ВЫПУСКАТЬ на уровне 3 и Zopfli на уровне 4.
  • pngout был сделан с помощью собственного дефлатера автора (аналогично авторской утилите zip, kzip), с сохранением всех возможностей уменьшения / фильтрации цвета. Однако pngout не позволяет использовать несколько пробных версий фильтров за один запуск. Предлагается использовать его коммерческую версию с графическим интерфейсом, pngoutwin или использовать с обертка для автоматизации испытаний или для повторного сжатия с использованием собственного дефлятора, сохраняя при этом фильтр построчно.[заметка 2]
  • зопфлипнг был также сделан с собственным дефлэйтером, zopfli. В нем есть все функции оптимизации, которые есть у optipng и pngcrush (включая автоматизацию испытаний), при этом он обеспечивает очень хороший, но медленный дефлейтер.

Ниже приводится простое сравнение их характеристик.

ОптимизаторУдаление фрагментовУменьшение цветаФильтрацияПовторное использование фильтра[заметка 3]Несколько испытаний фильтров за один запускDeflater[примечание 4]
AdvpngдаНет[примечание 5]0НетНет данных[примечание 6](несколько)
AdvdefНетНетПовторно использует предыдущий набор фильтровВсегдаНет данных(несколько)
OptiPNGдада0–4 или адаптивныйНетдаzlib
pngcrushдада0–4 или адаптивныйНетдаzlib
pngoutдада0–4 или адаптивныйда[заметка 2]Нетkzip
зопфлипнгдада0–4 или адаптивная с 2 разными алгоритмами, или грубым способомдадаZopfli

До появления zopflipng на практике хорошим способом оптимизации png было использование комбинации двух инструментов в последовательности для оптимального сжатия: один, который оптимизирует фильтры (и удаляет вспомогательные фрагменты), и тот, который оптимизирует DEFLATE. Хотя pngout предлагает и то, и другое, за один прогон можно указать только один тип фильтра, поэтому его можно использовать с обертка или в сочетании с optipng или pngcrush,[заметка 2] действует как повторно дефлятор, как и advdef.

Удаление вспомогательного фрагмента

Для удаления вспомогательных фрагментов большинство инструментов оптимизации PNG имеют возможность удалять все данные цветокоррекции из файлов PNG (гамма, баланс белого, цветовой профиль ICC, стандартный цветовой профиль RGB). Это часто приводит к гораздо меньшим размерам файлов. Например, с помощью pngcrush для этого используются следующие параметры командной строки:

pngcrush -rem gAMA -rem cHRM -rem iCCP -rem sRGB InputFile.png OutputFile.png

Вспомогательные фрагменты также могут быть удалены без потерь с помощью бесплатной программы Win32. PNG.

Оптимизация фильтра

Все OptiPNG, pngcrush, pngout и zopflipng предлагают варианты применения одного из типов фильтров 0–4 глобально (с использованием одного и того же типа фильтра для всех строк) или с «псевдофильтром» (пронумерованный 5), который для каждой строки выбирает один из фильтры типов 0–4 с использованием адаптивного алгоритма. Zopflipng предлагает 3 различных адаптивных метода, включая поиск методом перебора, который пытается оптимизировать фильтрацию.[примечание 7]

pngout и zopflipng предоставляют возможность сохранения / повторного использования[заметка 2][примечание 8] набор построчных фильтров, присутствующий во входном изображении.

OptiPNG, pngcrush и zopflipng предоставляют возможность опробовать разные стратегии фильтрации за один запуск и выбрать лучшую. Бесплатная версия pngout для командной строки не предлагает этого, в отличие от коммерческой версии pngoutwin.[примечание 9]

ОТКАЗАТЬ оптимизацию

Zopfli и LZMA SDK нанять ВЫПУСКАТЬ реализации, которые производят более высокие степени сжатия чем zlib эталонная реализация за счет производительности. AdvanceCOMP с Advpng и Advdef может использовать любую из этих библиотек для повторного сжатия файлов PNG. Кроме того, PNGOUT содержит свой проприетарный DEFLATE реализация.

Advpng не имеет возможности применять фильтры и всегда использует фильтр 0 глобально (оставляя данные изображения неотфильтрованными); поэтому его не следует использовать там, где фильтрация дает значительную пользу изображению. Напротив, Advdef из того же пакета не имеет дело со структурой PNG и действует только как повторно дефлятер, сохраняя любые существующие настройки фильтра.

Оптимизация иконок

С иконки предназначенные для Windows Vista и более поздних версий, могут содержать субизображения PNG, к ним также можно применить оптимизацию. Хотя бы один редактор иконок, Пиксельформер, может выполнить специальный проход оптимизации при сохранении ICO файлы, тем самым уменьшив их размер. FileOptimizer (упомянутый выше) также может обрабатывать файлы ICO.

Иконки для macOS может также содержать субизображения PNG, но такого инструмента нет.

Смотрите также

Примечания

  1. ^ Фильтрация используется для увеличения сходства с данными, следовательно, для увеличения степени сжатия. Однако теоретически не существует формулы для подобия или абсолютной связи между подобием и компрессором, поэтому, если сжатие не будет выполнено, нельзя сказать, что один набор фильтров лучше другого.
  2. ^ а б c d Используйте pngout -f6, чтобы повторно использовать предыдущий набор фильтров
  3. ^ Инструменты, предлагающие такую ​​функцию, могут действовать как чистая перефлейтер для файлов PNG.
  4. ^ zlib, эталонная реализация deflate, сжатие неоптимально даже на максимальном уровне. Видеть Zopfli, zip формат в 7-zip и pngout.
  5. ^ Мало того, что advpng не поддерживает уменьшение цвета, он также не работает с изображениями с уменьшенным цветовым пространством.
  6. ^ Advpng может применять только фильтр 0 глобально, поэтому это ни да, ни нет, но N / A.
  7. ^ [optipng | pngcrush | pngout] -f ИЛИ zopflipng --filters
  8. ^ zopflipng --filters = p
  9. ^ Диалоговое окно настройки Pngoutwin для оптимизации предлагает пользователю выбор стратегий фильтрации.

Рекомендации

  1. ^ а б c «ISO / IEC 15948: 2004 - Информационные технологии - Компьютерная графика и обработка изображений - Переносимая сетевая графика (PNG): Функциональная спецификация». Получено 19 февраля 2011.
  2. ^ «История PNG». Libpng.org. 29 мая 2010 г.. Получено 20 октября 2010.
  3. ^ «Стандарт МЭК (сфера применения)». 10 ноября 2003 г.
  4. ^ «Определение существительного PNG из Оксфордского словаря для продвинутых учащихся». Словари Oxford Learner's. Получено 21 января 2018.
  5. ^ Т. Бутелл; и другие. (Март 1997 г.). «PNG (переносимая сетевая графика), версия 1.0» ». RFC 2083. IESG. сек. 3. Дои:10.17487 / RFC2083.
  6. ^ «Регистрация нового медиа-типа image / png». IANA. 27 июля 1996 г.
  7. ^ TBH (6 января 1995 г.). «Мысли о замене файлов формата GIF». Groups.google.com. Получено 20 октября 2010.
  8. ^ «Стандарт PNG, раздел 8.4». PNG сам по себе является форматом с одним изображением. (...) В будущем может быть определен формат нескольких изображений на основе PNG. Такой формат будет считаться отдельным форматом файла.
  9. ^ Томас Бутелл (1 марта 1997 г.). "PNG (Portable Network Graphics) Specification 1.0".
  10. ^ Подпись файла PNG
  11. ^ Макет чанка
  12. ^ а б https://books.google.com/books?id=lvMxDwAAQBAJ&pg=PT686#v=onepage&f=false - «Каждый патрон [имеет ...]: длину, тип блока, данные блока и 32-битный CRC. Длина - это 32-битное целое число без знака, указывающее размер только поля данных блока»
  13. ^ https://books.google.com/books?id=lvMxDwAAQBAJ&pg=PT686 - «Тип блока - это 32-битный код FourCC, такой как IHDR, IDAT или IEND».
  14. ^ а б «Спецификация переносимой сетевой графики (PNG) (второе издание)». W3.org. Получено 8 августа 2016.
  15. ^ «Спецификация переносимой сетевой графики (PNG) (второе издание)». W3.org. Получено 1 мая 2013.
  16. ^ https://www.w3.org/TR/PNG/#11IEND
  17. ^ «Спецификация переносимой сетевой графики (PNG) (второе издание) Информационные технологии - Компьютерная графика и обработка изображений - Переносимая сетевая графика (PNG): функциональная спецификация. ISO / IEC 15948: 2003 (E) Рекомендация W3C от 10 ноября 2003 г.»).
  18. ^ Томас Копп (17 апреля 2008 г.). «Цифровые подписи PNG: спецификация расширения».
  19. ^ «Расширения к спецификации PNG 1.2, версия 1.5.0».
  20. ^ https://www.w3.org/TR/PNG/#11gAMA
  21. ^ https://www.w3.org/TR/PNG/#11pHYs - редактор: Дэвид Дуче, Университет Оксфорд Брукс
  22. ^ https://www.w3.org/TR/PNG/#11sBIT - под названием «Спецификация переносимой сетевой графики (PNG) (второе издание)», всего 10 байт - цветовой тип 2 и 3, всего 3 байта
  23. ^ https://www.w3.org/TR/PNG-Chunks.html - под названием «PNG (Portable Network Graphics) Specification Version 1.0»> 4.2.6. sBIT Значимые биты, всего 13 байт - цветовые типы 2 и 3, всего 6 байтов
  24. ^ http://www.libpng.org/pub/png/book/chapter11.html#png.ch11.div.7 - цитата: «Изображения в градациях серого являются самыми простыми; в этом случае sBIT содержит один байт, указывающий количество значащих битов в исходных данных»
  25. ^ http://www.libpng.org/pub/png/spec/1.2/PNG-Chunks.html#C.sRGB
  26. ^ https://www.w3.org/TR/PNG/index-noobject.html#11sRGB - «Спецификация переносимой сетевой графики (PNG) (второе издание)» (2-е издание является последним изданием)
  27. ^ "Новости PNG за 2006 год". Libpng.org.
  28. ^ Спецификация Portable Network Graphics (PNG) (второе издание): 11.2.2 Заголовок изображения IHDR.
  29. ^ а б «Спецификация PNG: обоснование». w3.org.
  30. ^ «Спецификация переносимой сетевой графики (PNG) (второе издание): 9 фильтров». W3.org. Получено 20 октября 2010.
  31. ^ «Алгоритмы фильтрации». PNG Спецификация.
  32. ^ Паэт, Алан В. (1991). Арво, Джеймс (ред.). «Сжатие файлов изображений стало проще». Самоцветы графики 2. Academic Press, Сан-Диего: 93–100. Дои:10.1016 / B978-0-08-050754-5.50029-3. ISBN  0-12-064480-0. закрытый доступ
  33. ^ Крокер, Ли Дэниел (Июль 1995 г.). «PNG: формат переносимой сетевой графики». Журнал доктора Добба. 20 (232): 36–44.
  34. ^ «Введение в PNG». nuwen.net. Получено 20 октября 2010.
  35. ^ "Opera Desktop Team: выпуск Opera 9.5 после альфа". My.opera.com. Получено 20 октября 2010.
  36. ^ «iOS 8 и iPhone 6 для веб-разработчиков и дизайнеров: следующая эволюция Safari и нативных веб-приложений». mobilexweb.com. 17 сентября 2014 г.. Получено 24 сентября 2014.
  37. ^ scroggo (14 марта 2017 г.). "хром / хром / src / 7d2b8c45afc9c0230410011293cc2e1dbb8943a7". chromium.googlesource.com. Получено 31 марта 2017.
  38. ^ хром-хром; и другие. (27 марта 2017 г.). "хром / хром / SRC / 59.0.3047.0..59.0.3053.0". chromium.googlesource.com. Получено 31 марта 2017.
  39. ^ «Opera 46 выходит в финал, более качественная и первая телевизионная реклама Opera». Программное обеспечение Opera. Получено 26 июн 2017.
  40. ^ «Не удалось проголосовать: APNG 20070405a». 20 апреля 2007 г. Архивировано с оригинал 3 февраля 2008 г.
  41. ^ "Сравнение предложений по анимации группы PNG + тестовое программное обеспечение". xs4all.nl. Архивировано из оригинал 24 января 2009 г.
  42. ^ «Базовое введение в функции PNG». Libpng.org. Получено 20 октября 2010.
  43. ^ "GIF, PNG, JPG. Какой из них использовать?". Sitepoint.com. 3 августа 2009 г.. Получено 20 октября 2010.
  44. ^ «Расширения к спецификации PNG 1.2, версия 1.5.0». Получено 5 мая 2020.
  45. ^ «T.87: Сжатие без потерь и почти без потерь неподвижных изображений с непрерывным тоном - Базовый уровень». Международный союз электросвязи. Получено 20 марта 2011.
  46. ^ а б c d е ж грамм Глава 9. Сжатие и фильтрация, в PNG: полное руководство пользователя Greg Roelofs.
  47. ^ "libpng". Получено 13 июля 2013.
  48. ^ «Использование изображений PNG для отображения данных». Центр водных наук штата Орегон. 16 февраля 2006 г.
  49. ^ «Почему на веб-страницах GNU нет файлов GIF». Операционная система GNU. 16 декабря 2008 г.
  50. ^ "Информационный бюллетень PNG". Консорциум World Wide Web. 7 октября 1996 г.
  51. ^ "Страница ресурсов для gif2png 2.5.11". catb.org.
  52. ^ «Записать все гифки». burnallgifs.org.
  53. ^ «Прозрачность PNG в Internet Explorer». Журнал ПК. 5 октября 2004 г.
  54. ^ а б c d е «Браузеры с поддержкой PNG». 14 марта 2009 г.
  55. ^ «Проводник Windows аварийно завершает работу, когда я щелкаю файл PNG Fireworks для его просмотра». Adobe Systems. 5 июня 2007 г.
  56. ^ «Невозможно просмотреть изображения .png в Internet Explorer 4.0». База знаний Microsoft.
  57. ^ "PNG, находящиеся внутри тега объекта, распечатать как негативное изображение". База знаний Microsoft.
  58. ^ «Изображения PNG печатаются неправильно в Internet Explorer 5.01». База знаний Microsoft.
  59. ^ «Вы не можете просматривать некоторые изображения PNG в Internet Explorer 6». База знаний Microsoft.
  60. ^ «Вы не можете использовать Internet Explorer 6, чтобы открыть файл PNG, содержащий один или несколько блоков IDAT нулевой длины». База знаний Microsoft.
  61. ^ «Часто задаваемые вопросы в формате PNG».
  62. ^ «Доктор философии: переносимая сетевая графика теряет прозрачность в веб-браузере». База знаний Microsoft.
  63. ^ «Файлы PNG не показывают прозрачность в Internet Explorer». База знаний Microsoft.
  64. ^ Ловитт, Майкл (21 декабря 2002 г.). «Кроссбраузерная переменная непрозрачности с PNG: реальное решение». Список отдельно. Архивировано из оригинал 22 августа 2011 г.. Получено 21 июля 2009.
  65. ^ "IE7 альфа-прозрачный PNG + непрозрачность". Канал 9. Архивировано из оригинал 27 августа 2011 г.. Получено 23 января 2009.
  66. ^ Фулбрайт, Майкл (1999). «Дорожная карта библиотеки GNOME 1.0». Архивировано из оригинал 30 января 2010 г.. Получено 19 декабря 2007.
  67. ^ «Windows Vista - Иконки». OOne. 2007. Получено 12 ноября 2007.
  68. ^ «PNG может быть форматом с потерями». Pngmini.com. Получено 1 февраля 2014.
  69. ^ Труня, Космин. «Руководство по оптимизации PNG».

дальнейшее чтение

внешняя ссылка