Изображение PNG с 8-битным каналом прозрачности, наложенный на клетчатый фон, обычно используется в графическом секторе для обозначения прозрачности | |
Расширение имени файла | .png |
---|---|
Тип интернет-носителя | image / png |
Код типа | PNGf. PNG |
Унифицированный идентификатор типа (UTI) | public.png |
Магическое число | 89 50 4e 47 0d 0a 1a 0a |
Разработано | PNG Development Group (подарено W3C ) |
Первоначальный выпуск | 1 октября 1996 г.; 24 года назад (1996-10-01) |
Тип формата | Без потерь растровое изображение формат изображения |
Расширен до | APNG, JNG и MNG |
Стандартный | ISO / IEC 15948, IETF RFC 2083 |
Открытый ф ормат ? | Да |
Portable Network Graphics (PNG, официально произносится как, подробнее произносится как ) - это файл растровой графики формат, который поддерживает сжатие данных без потерь. PNG был разработан как улучшенная, не запатентованная замена для Graphics Interchange Format (GIF).
PNG поддерживает изображения на основе палитры (с палитрами 24-битного RGB или 32-битного RGBA цветов), полутоновые изображения (с или без альфа-канала для прозрачности) и полноцветные изображения RGB или RGBA без палитры. Рабочая группа PNG разработала формат для передачи изображений в Интернет, а не для печатной графики профессионального качества; поэтому цветовые пространства, отличные от RGB , такие как CMYK, не поддерживаются. Файл PNG содержит одно изображение в расширяемой структуре блоков, кодирующее базовые пиксели и другую информацию, такую как текстовые комментарии и проверки целостности, задокументированные в RFC 2083.
Файлы PNG используют расширение файла PNG
или png
, и им назначается MIME тип носителя изображение. / png
. PNG году был опубликован как информационный RFC 2083 в марте 1997 года и как стандарт ISO / IEC 15948 в 2004 году.
Мотивом для создания формата PNG послужило осознание в начале 1995 года того, что алгоритм Лемпеля - Зива - Велча (LZW) использованный сжатие данных, в Формат обмена графикой (GIF) был запатентован компанией Unisys. Были и другие проблемы с форматом GIF, которые сделали замену желательной, особенно его ограничение 256 цветов в то время, когда компьютеры с более продвинутыми дисплеями становились обычным явлением.
В ветке предварительного обсуждения в январе 1995 г. в группе новостей usenet "comp.graphics" с темой «Мысли о формате файла, заменяющего GIF» было много предложений, которые позже будут частью Формат файла PNG. В этой беседе Оливер Фромм, автор популярной программы программы JPEG, означающий, что PING не является GIF, а также <143, рекурсивным акронимом >.png.
Хотя GIF допускает анимацию, было решено, что PNG должен быть форматом одного изображения. В 2001 году разработчики PNG опубликовали формат сетевых графики с изображениями (MNG) с поддержкой анимации. MNG обеспечила умеренную поддержку приложений, но недостаточно для основных веб-браузеров и не используется дизайнерами или издателями веб-сайтов. В 2008 году некоторые разработчики Mozilla опубликовали формат Animated Portable Network Graphics (APNG) с аналогичными целями. APNG - это формат, который установлен в веб-браузерах на основе Gecko и Presto, а также обычно используется для эскизов в системе Sony PlayStation Portable (с использованием обычного расширение файла PNG). В 2017 году браузеры на базе Chromium приняли поддержку APNG. В январе 2020 года Microsoft Edge был основан на Chromium, унаследованной поддержке APNG. Благодаря этому все основные браузеры теперь APNG.
.
Исходный PNG Спецификация была особой группы экспертов и энтузиастов компьютерной графики. Обсуждения и решения по формату проводились по электронной почте. Первоначальными авторами, перечисленными в RFC 2083, являются:
Файл PNG начинается с 8- байт подпись (см. Изображение шестнадцатеричного редактора справа):
Значения (шестнадцатеричное ) | Назначение |
---|---|
89 | Установлен старший бит для системы обнаружения передачи, которые не содержат 8-битные данные и для уменьшения вероятности ошибочной интерпретации текстового файла как PNG или наоборот. |
50 4E 47 | В ASCII, буквы PNG, что позволяет человеку легко определить формат, если он просматривается в текстовом редакторе. |
0D 0A | A DOS -стиль конец (CRLF) для построения преобразования конца строки T строки в DOS-Unix. |
1A | Байт, который останавливает отображение файла в DOS при использовании команды type - символ конца файла. |
0A | Окончание строки в стиле Unix (LF) для определения соответствия строки Unix-DOS. |
После заголовка следует серия из блоков, каждый из которых передает определенную информацию об изображении. Чанки являются критическими или вспомогательными, и программа, обнаруживающая вспомогательный фрагмент, который она не понимает, может игнорировать его. Эта структура уровня хранения на основе фрагментов, аналогичная по концепции контейнерному формату или Amiga IFF, включает для расширения формата PNG. при сохранении совместимости со старыми версиями - он обеспечивает прямую совместимость, и та же самая файловая структура (с другой подписью и фрагментами) используется в связанных MNG, JNG, и форматы APNG.
Блок состоит из четырех частей: длина (4 байта, обратный порядок байтов ), типа / имени блока (4 байта), данных блока (длина в байтах) и CRC (циклический избыточный код / контрольная сумма; 4 байта). CRC - это сетевой порядок байтов CRC-32, вычисляемый по типу блока и данным блока, но не по длине.
Длина | Тип блока | Данные блока | CRC |
---|---|---|---|
4 байта | 4та | Длина байтов | 4 байта |
Типам блоков присваиваются четырехбуквенные чувствительные к регистру тип / имя ASCII; сравните FourCC. Регистр различных букв в имени (бит 5 числовых значений символов) - это битовое поле , которое использует программеру некоторую информацию о блоках природы, которые он выполняет. не узнаю.
Регистр первой буквы указывает, является ли блок критическим или нет. Если первая буква в верхнем регистре, фраг важен; в противном случае фрагмент является вспомогательным. Критические блоки содержат информацию, специальные для чтения файла. Если декодер обнаруживает критический фрагмент, который он не распознает, он должен прервать чтение или предоставить пользователю соответствующее предупреждение.
Регистр второй буквы указывает, является ли блок «общедоступным» (либо в спецификации, либо в реестре общедоступных блоков специального назначения) или «частным» (не стандартизованным). Прописные буквы являются общедоступными, а строчные - частными. Это гарантирует, что публичные и частные имена блоков никогда не будут конфликтовать друг с другом (хотя два частных имени блоков могут конфликтовать).
Третья буква должна быть прописной, чтобы соответствовать данным PNG. Он зарезервирован для будущего расширения. Декодеры должны обрабатывать фрагмент с третьей строчной буквой так же, как и любой другой нераспознанный фрагмент.
Регистр четвертой буквы указывает, можно ли копировать фрагмент редакторами, которые его не распознают. В нижнем регистре фрагмент можно безопасно скопировать независимо от модификации файла. В верхнем регистре он может быть скопирован только в том случае, если изменения не коснулись каких-либо критических фрагментов.
Декодер должен иметь возможность интерпретировать критические фрагменты для чтения и визуализации файла PNG.
МПСР
должен быть первым фрагментом; он содержит (в этом порядке) ширину изображения (4 байта); высота (4 байта); разрядность (1 байт, значения 1, 2, 4, 8 или 16); тип цвета (1 байт, значения 0, 2, 3, 4 или 6); метод сжатия (1 байт, значение 0); метод фильтрации (1 байт, значение 0); и метод чередования (1 байт, значения 0 «без чередования» или 1 «Adam7 чередование») (всего 13 байтов данных). Как указано в Консорциуме Всемирной паутины, битовая глубина определяется как «количество битов на выборку или на индекс палитры (не на пиксель)».PLTE
содержит палитру : список цветов.IDAT
содержит изображение, которое может быть разделено между блоками IDAT. Такое разделение немного увеличивает размер файла, но позволяет генерировать PNG в потоковом режиме. Блок IDAT содержит фактические данные изображения, которые обеспечивают выходным потоком алгоритма сжатия.ИЕНД
отмечает конец изображения; поле данных блока IEND имеет 0 байтов / пусто.Блок PLTE
необходим для цветного типа 3 (индексированный цвет ). Он не является обязательным для типов цвета 2 (истинный цвет и истинный цвет с альфа-каналом) и не должен иметь типов цвета 0 и 4 (оттенки серого и оттенки серого с альфа-каналом).
Другие атрибуты изображения, которые могут храниться в файлах PNG, включают значения гаммы, цвет фона и текстовую информацию метаданных. PNG также поддерживает управление цветом за счет включения профилей ICC цветового пространства.
БКГД
задает цвет фона по умолчанию. Он для использования, когда нет лучшего выбора, например, в автономных средствах просмотра изображений (но не в веб-браузерах; подробнее см. Ниже).cHRM
дает координаты цветности основных цветов дисплея и белая точка.dSIG
предназначены для хранения цифровых подписей.eXIf
хранит Exif метаданные.gAMA
определяет гамму. Блок gAMA содержит всего 4 байта, и его значение представляет собой значение гаммы, умноженное на 100 000; например, значение гаммы 1 / 3,4 вычисляется как 29411,7647059 ((1 / 3,4) * (100 000)) и преобразуется в целое число (29412) для хранения.hIST
может хранить гистограмму или общую сумму каждого цвета изображения.iCCP
- это цветовой профиль ICC.iTXt
содержит ключевое слово и текст UTF-8 с кодировками для возможного сжатия и перевода отмечены языковым тегом. Платформа расширяемых метаданных (XMP) использует этот блок с ключевым словом XML: com.adobe.xmp.pHYs
содержит предполагаемый размер пикселя (или соотношение сторон пикселей); pHYs содержит «Пикселей на единицу, ось X» (4 байта), «Пикселей на единицу, ось Y» (4 байта) и «Спецификатор единицы» (1 байт), всего 9 байтов.sBIT
(значащие биты) точность указывает цветопередачи исходных данных; этот блок содержит в общей сложности от 1 до 13 байт.sPLT
предлагает палитру для использования, если полный диапазон цветов недоступен.sRGB
указывает, что стандартное цветовое пространство sRGB используется; блок sRGB содержит только 1 байт, который используется для цели рендеринга (для цели рендеринга 4 значения - 0, 1, 2 и 3).sTER
блок стереоизображения для стереоскопических изображений.ТЕКСТ
может хранить текст, который может быть представлен в ISO / IEC 8859-1, с одним парой ключ-значение для каждого кусок. «Ключ» должен содержать от 1 до 79 символов. Разделитель - это нулевой символ. «Значение» может иметь любую длину, включая от нуля до максимально допустимого размера блока за вычетом длины ключевого слова и разделителя. Ни «ключ», ни «значение» не могут содержать нулевой символ. Начальные и конечные пробелы также запрещены.tIME
сохранение время последнего изменения изображения.tRNS
содержит информацию о прозрачности. Для проиндексированных изображений он хранит значения альфа-канала для одной или нескольких записей палитры. Для полноцветных изображений и изображений в градациях серого в нем хранится одно значение пикселя, рассматривать как полностью прозрачное.zTXt
вызывает сжатый текст (и маркер методами сжатия) с теми же ограничениями, что и tEXt.Первая буква в регистре в этих фрагментах означает, что они не нужны для указанных PNG. Последняя строчная буква в некоторых фрагментах указывает на то, что их можно безопасно копировать, даже если соответствующее приложение не понимает.
Тип цвета | Каналы | Биты на канал | ||||
---|---|---|---|---|---|---|
1 | 2 | 4 | 8 | 16 | ||
Индексированные | 1 | 1 | 2 | 4 | 8 | |
Оттенки серого | 1 | 1 | 2 | 4 | 8 | 16 |
Оттенки серого и альфа | 2 | 16 | 32 | |||
Truecolor | 3 | 24 | 48 | |||
Truecolor и альфа | 4 | 32 | 64 |
Пиксели в изображениях PNG - это числа, которые могут быть либо индексами образцов данных в палитра или сам образец данных. Палитра - это отдельная таблица, содержащаяся в блоке PLTE. Данные образца для одного пикселя состоят из кортежа от одного до четырех чисел. Независимо от того, представляют ли пиксельные данные индексы палитры или явные значения выборки, числа регистрируются как каналы, и каждое число в изображении кодируется в идентичном формате.
Разрешенные форматы кодируют каждое число как целое число без знака с использованием фиксированного числа битов, которое в спецификации PNG называется глубиной в битах. Обратите внимание, что это не то самое, что глубина цвета, которая обычно используется для обозначения общего количества в каждом бителе, а не в каждом канале. Допустимая битовая глубина сведена в таблицу вместе с общим битом, используемым для каждого пикселя.
Количество каналов зависит от того, является ли изображение полутоновым или цветным и имеет ли оно альфа-канал. PNG позволяет использовать комбинации каналов, называемые типом цвета.
0 (000 2) | оттенки серого |
2 (010 2) | красный, зеленый и синий: rgb / truecolor |
3 (011 2) | проиндексировано: канал, обеспечивающие индексы в палитре цветов |
) 4 (100 2) | оттенки серого и альфа: уровень непрозрачности для каждого пикселя |
6 (110 2) | красный, зеленый, синий и альфа |
Тип цвета указан как 8- однако используются только 3 младших бита, и даже в этом случае разрешены только пять комбинаций, перечисленных выше. Пока тип цвета действителен, его можно рассматривать как битовое поле, как показано в соседней таблице:
Цвет. тип | Имя | Двоичный | Маски | |||
---|---|---|---|---|---|---|
A | C | P | ||||
0 | Оттенки серого | 0 | 0 | 0 | 0 | |
2 | Truecolor | 0 | 0 | 1 | 0 | цвет |
3 | Индексированные | 0 | 0 | 1 | 1 | цвет, палитра |
4 | Оттенки серого и альфа | 0 | 1 | 0 | 0 | альфа |
6 | Truecolor и альфа | 0 | 1 | 1 | 0 | альфа, цвет |
С индексированными цветными изображениями палитра всегда сохраняет трехцветные цвета с глубиной 8 бит на канал (24 бита на запись палитры). Кроме того, может быть включен дополнительный список 8-битных альфа-значений для записей палитры; если они не включены или короче палитры, остальные записи палитры считаются непрозрачными. В палитре не должно быть больше элементов, чем позволяет глубина цвета изображения, но может быть меньше (например, если изображение с 8-битными пикселями использует только 90 цветов, тогда ему не нужны записи палитры для всех 256 цветов). Палитра должна содержать записи для всех значений пикселей, присутствующих в изображении.
Стандарт позволяет индексированным цветным PNG иметь 1, 2, 4 или 8 бит на пиксель; Полутоновые изображения без альфа-канала могут иметь 1, 2, 4, 8 или 16 бит на пиксель. Для всего остального используется битовая глубина на канал 8 или 16. Допустимые комбинации приведены в таблице выше. Стандарт требует, чтобы декодеры могли читать все поддерживаемые цветовые форматы, но многие редакторы изображений могут создавать только их небольшое подмножество.
PNG предлагает множество вариантов прозрачности. Для изображений в истинных цветах и в оттенках серого можно объявить прозрачным либо одно значение пикселя, либо добавить альфа-канал (что позволяет использовать любой процент частичной прозрачности). Для изображений с палитрой в записи палитры можно добавить альфа-значения. Количество таких сохраненных значений может быть меньше общего количества записей палитры, и в этом случае оставшиеся записи считаются полностью непрозрачными.
Предполагается, что сканирование значений пикселей для двоичной прозрачности должно выполняться перед любым уменьшением цвета, чтобы избежать непреднамеренно прозрачных пикселей. Это, скорее всего, создаст проблему для систем, которые могут декодировать изображения с 16битами на канал (как требуется для соответствия спецификации), но выводят только с 8 битами на канал (норма для всех систем, кроме самых высоких)..
Альфа-хранилище может быть "собственным" ("предварительное умноженное ") или "несвязанным", но PNG стандартизован на "несвязанном" альфа-канале, что означает, что изображения не кодируется альфа; выбросы, представленные в RGB, не выбросы выбросами на уровне пикселей. Это означает, что операция сверх умножит излучение RGB на альфа и не сможет правильно излучение и окклюзию.
использует процесс двухэтапного сжатия PNG:
PNG использует DEFLATE, незапатентованное сжатие данных без потерь алгоритм, включающий комбинацию LZ77 и кодирования Хаффмана. Разрешительно лицензированные реализации DEFLATE, такие как zlib, широко доступны.
По сравнению с форматами сжатия с потерями, такими как JPG, выбор сжатия выше среднего задерживает обработку, но часто не приводит к значительно меньшему размеру файла.
Перед применением DEFLATE данные преобразуются с помощью метода прогнозирования: один метод фильтрации используется для всего, а для каждой строки изображения - фильтр Тип выбран для преобразования данных, чтобы сделать их более сжимаемыми. Тип фильтра, используется для строки сканирования, добавляется к строке сканирования, чтобы включить встроенную декомпрессию.
В текущей объявленной PNG существует только один метод фильтрации (обозначенный как метод 0), и, таким образом, на практике единственный выбор - какой тип фильтра применяется к каждой строке. Для этого метода фильтр предсказывает значение каждого пикселя на предыдущих предсказаниях пикселей и вычитает цвет пикселя из фактического значения, как в DPCM. Линия изображения, отфильтрованная таким образом, часто более сжимаема, чем линия необработанного изображения, особенно если она похожа на последовательность выше, поскольку отличия от предсказания обычно сгруппированы вокруг 0, а не распространяться по всем возможным значениям изображения. Это особенно важно при связывании отдельных объектов, поскольку DEFLATE не понимает, что изображение является двухмерным объектом, и вместо этого просто видит данные изображения как поток байтов.
Существует пять типов фильтров для метода фильтрации 0; каждый тип предсказывает значение каждого байта (данных изображения до фильтрации) на основе соответствующего байта пикселя (A), пикселя вверху (B) и пикселя вверху и слева (C) или некоторая их комбинация и кодирует разницу между предсказанным значением и фактическим значением. Фильтры применяются к байтовым значениям, а не к пикселям; значения пикселей могут быть одними или двумя байтами или значениями на байт, но никогда не пересекают границы байта. Типы фильтров:
Байт типа | Имя фильтра | Прогнозируемое значение |
---|---|---|
0 | Нет | Ноль (так что необработанное значение байта проходит без изменений) |
1 | Sub | Байт A (слева) |
2 | Up | Байт B (вверху) |
3 | Среднее значение | Среднее значение байтов A и B, округленное в меньшую сторону |
4 | Paeth | A, B или C, в зависимости от того, что ближе всего к p = A + B - C |
Фильтр Паэта основан на алгоритме Алана У. Паэта. Сравнительно с версией DPCM, используемой в JPEG без потерь, и с дискретным вейвлет-преобразованием с использованием 1 × 2, 2 × 1 или (для предсказателя Паэта) Окна 2 × 2 и вейвлеты Хаара.
Сжатие дополнительно улучшено за счет адаптивного выбора типов фильтров для каждой строки. Это улучшение и эвристический метод его реализации, используемое в программах для записи PNG, были созданы Ли Дэниелом Крокером, который протестировал эти методы на многих изображениях во время создания формата; выбор фильтра является компонентом оптимизации размера файла, как обсуждается ниже.
. Используется чересстрочная развертка, каждый этап чересстрочной развертки фильтруется отдельно, что означает, что изображение может быть визуализировано постепенно по мере приема каждого этапа; однако чередование обычно делает сжатие менее эффективным.
PNG предлагает дополнительную двухмерную 7-проходную схему чересстрочной развертки - Adam7 алгоритм. Это более сложная схема, чем одномерная четырехпроходная схема GIF, позволяет видеть более четкое изображение с низким разрешением на более ранней стадии передачи, особенно если используются алгоритмы интерполяции, такие как бикубическая интерполяция.
Однако 7-проходная схема тенденций уменьшать сжимаем данных больше, чем более простые схемы.
Сам PNG не поддерживает анимацию. MNG является расширением для PNG, MNG имеет расширенную базовую структуру и фрагменты PNG, но он значительно более сложен и имеет другую подпись файла, что автоматически делает его совместимым со стандартными декодерами PNG.
Сложность MNG привела к предложению APNG разработчиками Mozilla Foundation. Он основан на PNG, поддерживает анимацию и проще, чем MNG. APNG предлагает откат к отображению одного изображения для декодеров PNG, которые не поддерживают APNG. APNG поддерживается в Firefox 3.0 и выше, Pale Moon (все версии) и Opera 9.5, но Opera изменила свой механизм компоновки на Blink, поддержка была прекращена. версия Safari на iOS 8 и Safari 8 для OS X Yosemite поддерживает APNG. В Chromium 59.0 была добавлена поддержка APNG, а затем в версии 46.0 была добавлена Opera. В апреле 2007 года группа компаний PNG решила не использовать APNG. Обсуждались несколько альтернатив: ANG, aNIM / mPNG, «PNG в GIF» и его подмножество «RGBA в GIF».
89 50 4E 47 0D 0A 1A 0A . Подпись PNG | IHDR . Заголовок изображения | IDAT . Данные изображения | IEND . Конец изображения |
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 AE 42 60 82 | .PNG........ IHDR............... wS...... IDAT.. c.................. IEN. DB`. |
Отображается в виде, со значениями байтов слева, показанными в шестнадцатеричном формате, а справа их эквивалентными символами из ISO-8859-1 с нераспознанными и управляющими символами заменены точками. Кроме того, подпись PNG и отдельные фрагменты отмечены цветом. Обратите внимание, что их легко идентифицировать из-за их удобочитаемых типов (в этом примере PNG, IHDR, IDAT и IEND).
Причинами использования этого международного стандарта могут быть:
Изображения PNG менее широко поддерживаются старыми браузерами. В частности, IE6 имеет ограниченную поддержку 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
.
Ранние веб-браузеры не поддерживали изображения PNG; JPEG и GIF были основными форматами изображений. JPEG обычно использовался при экспорте изображений, содержащих градиенты, для веб-страниц из-за ограниченной глубины цвета GIF. Однако сжатие JPEG приводит к небольшому размытию градиента. Формат PNG воспроизводит градиент с максимальной точностью для заданной глубины цвета, сохраняя при этом небольшой размер файла. PNG стал оптимальным выбором для небольших градиентных изображений, поскольку поддержка формата веб-браузером улучшилась. Для отображения градиентов в современных браузерах совсем не нужны изображения, поскольку градиенты можно создавать с помощью CSS.
JPEG-LS - формат изображения, разработанный Объединенными экспертами в области фотографии Группа, хотя и менее широко известна и поддерживается, чем другой формат JPEG с потерями, описанный выше. Он напрямую сопоставим с PNG и имеет стандартный набор тестовых изображений. В Waterloo Repertoire ColorSet, стандартном наборе тестовых изображений (не связанных с набором тестов на соответствие JPEG-LS), JPEG-LS обычно работает лучше, чем PNG, на 10–15%, но с некоторыми изображениями PNG работает значительно лучше, порядка 50–75%. Таким образом, если оба этих формата являются вариантами, а размер файла является важным критерием, следует учитывать оба этих формата в зависимости от изображения.
Формат файлов изображений с тегами (TIFF) - это формат, включает который очень широкий набор параметров. Хотя это делает TIFF полезным в качестве универсального формата обмена между профессиональными приложениями для редактирования изображений, добавление его поддержки в приложениях становится более сложным, поэтому он практически не поддерживается в приложениях, не связанных с манипулированием изображений (например, в веб-браузерах). Высокий уровень расширяемости также означает, что другие приложения предоставляют только подмножество функций, что может создать средства взаимодействия для пользователей и проблемы совместимости.
Наиболее распространенным универсальным алгоритмом сжатия без потерь, используемым с TIFF, является Lempel - Ziv - Welch (LZW). Этот метод сжатия также используется в GIF, был защищен патентами до 2003 года. TIFF также поддерживает алгоритм сжатия, PNG (т. Е. Тег сжатия 0008 16 'Adobe -style ') со средним использованием и поддержкой приложений.. TIFF также предлагает специальные алгоритмы сжатия без потерь, такие как CCITT Group IV, которые могут сжимать двухуровневые изображения (например, факсы или черно-белый текст) лучше, чем алгоритм сжатия PNG.
PNG поддерживает только альфа без предварительного умножения, тогда как TIFF также поддерживает "связанный" (первоначальный умноженный) альфа.
Официальной эталонной реализацией формата PNG библиотека программирования libpng. Он публикуется как бесплатное программное обеспечение в соответствии с условиями разрешающей лицензии на бесплатное программное обеспечение. Следовательно, он обычно является системной библиотекой в операционных системах.
Формат PNG широко распространенными графическими программами, включая Adobe Photoshop, Corel Photo-Paint и Paint Shop Pro, GIMP, GraphicConverter, Helicon Filter, ImageMagick, Inkscape, IrfanView, редактор изображений Pixel, Paint.NET и Xara Photo Graphic Designer и многие другие. Некоторые, входящие в состав популярных операционных систем, поддерживающих PNG, включают Microsoft Paint и Apple Photos / iPhoto и Preview, причем GIMP также часто входит в комплект популярных дистрибутивов Linux.
Adobe Fireworks (ранее - Macromedia ) использует PNG в качестве собственного формата файла, причем все с помощью других редакторов изображений и утилит предварительный просмотр для просмотра сведенного изображения. Однако Fireworks по умолчанию также хранит метаданные для слоев, анимации, векторных данных, текста и эффектов. Такие файлы не должны распространяться напрямую. Вместо этого Fireworks может экспортировать изображение как оптимизированный PNG без дополнительных метаданных для использования на веб-страницах и т. Д.
Поддержка PNG впервые появилась в Internet Explorer 4.0b1 (32-битный только для NT) и в Netscape 4.04.
Несмотря на призывы Free Software Foundation и Консорциум World Wide Web (W3C), такие инструменты, как gif2png, и кампании, такие как Burn All GIFs, внедрение PNG на веб-сайтах происходило довольно медленно из-за поздней и ошибочной поддержки в Internet Explorer, особенно в прозрачности.
Совместимость с PNG. браузеры включают: Apple Safari, Google Chrome, Mozilla Firefox, Opera, Camino, Интернет.. Explorer 7 (все еще много проблем), Internet Explorer 8 (все еще есть проблемы), Internet Explorer 9 и многие другие. Полное сравнение см. В разделе Сравнение веб-браузеров (поддержка формата изображений)..
В частности, версии Internet Explorer (Windows) ниже 9.0 имеют большие проблемы, позволяющие изображения не правильно отображать PNG.
Значки PNG поддерживаются в большинстве дистрибутивов Linux, по крайней мере, с 1999 года, в таких средах рабочего стола, как GNOME. В 2006 году Microsoft Windows поддержка значков PNG была представлена в Windows Vista. Иконки PNG поддерживаются также в AmigaOS 4, AROS, macOS, iOS и MorphOS. Кроме того, Android широко использует PNG.
Размер файла PNG может значительно различаться в зависимости от того, как он закодирован и сжимается; это обсуждается, и ряд советов дан в PNG: Полное руководство.
По сравнению с файлами GIF, файл PNG с той же информацией (256 цветов, без дополнительных фрагментов / метаданных), сжатый эффективным компрессором, обычно меньше, чем изображение в формате GIF. В зависимости от файла и компрессора, PNG может изменяться от несколько меньшего (10%) до значительно меньшего (50%) и несколько большего (5%), но редко бывает значительно больше для больших изображений. Это связано с производством DEFLATE в формате PNG по сравнению с LZW в формате GIF, а также тем, что добавленный уровень предварительного прогнозирования сжатия фильтров PNG учитывает изменение двумерного изображения для дальнейшего сжатия файлов; поскольку отфильтрованные данные кодируют между пикселями, они стремятся к кластеризации ближе к 0, а не распределяются по всем возможным значениям, и, таким образом, их легче сжимать с помощью DEFLATE. Однако некоторые версии Adobe Photoshop, CorelDRAW и MS Paint создают плохое сжатие PNG, создавая впечатление, что GIF более эффективен.
Файлы PNG различаются по размеру из-за ряда факторов:
Таким образом, существует информация о цветовом пространстве вместе с высокой глубиной цвета, максимальные метаданные (включая информацию о цветовом пространстве вместе с информацией, не влияет на отображение), чересстрочной разверткой и скоростью сжатия, которые все дают большие файлы с меньшей глубиной цвета, меньшим развертыванием вспомогательных фрагментов или их отсутствием, нет чересстрочная программа и сканирование, но требуемая к вычисм фильтрация и сжатие. Для разных целей выбираются компромиссы: максимальный файл может быть лучшим для архивирования и редактирования, тогда как урезанный файл может быть лучше для использования на веб-сайте, и такое же быстрое, но плохое сжатие предпочтительнее при многократном редактировании и сохранении файла, в то время Как медленное, но высокое сжатие предпочтительнее, когда файл стабилен: при архивировании или публикации. Чередование - это компромисс: он значительно ускоряет ранний рендеринг больших файлов (увеличивает задержку), но может увеличить размер файла (уменьшить пропускную способность) с небольшим выигрышем, особенно для небольших файлов.
Хотя PNG является форматом без потерь, кодировщики PNG могут обрабатывать данные изображения с потерями для улучшения сжатия PNG. Например, квантование полноцветного PNG до 256 цветов позволяет использовать индексированный цветовой тип для вероятного уменьшения размера файла.
Некоторые программы более эффективны, чем другие, при сохранении Файлы PNG, это относится к реализации сжатия PNG, используемой программы.
Многие графические программы (например, программа Apple Preview ) сохраняют PNG с большим объемом метаданных и данные цветокоррекции, которые обычно не нужны для Web просмотр. Неоптимизированные файлы PNG из Adobe Fireworks также печально известны этим, поскольку они содержат параметры, позволяющие редактировать изображение в поддерживаемых редакторах. Кроме того, CorelDRAW (по крайней мере версия 11) иногда создает файлы PNG, которые невозможно открыть Internet Explorer (версии 6–8).
Adobe Photoshop работает с файлами PNG в CS Suite при использовании функции «Сохранить для Интернета» (которая также позволяет явно использовать PNG / 8).
Adobe Fireworks по умолчанию файлы PNG большего размера, чем многие программы. Это проистекает из механизма его сохранения: фейерверк включает в себя большие фрагменты, содержащие полную информацию о слоях и явлениях. Это позволяет дальнейшее редактирование без потерь. При сохранении параметров «Экспорт» PNG-файлы Fireworks могут конкурировать с изображениями, созданными другими редакторами изображений, но больше не редактируются как что-либо, кроме сглаженных растровых изображений. Фейерверк не может размером файла PNG.
Среди других ярких примеров плохих компрессоров PNG:
Плохое сжатие увеличивает размер файла PNG, но не влияет на качество изображения или совместимость файла с другими программами.
Когда глубина цвета изображения truecolor уменьшается до 8-битной палитры (как в GIF), результирующие данные изображения обычно намного меньше. Таким образом, полноцветный PNG обычно больше, чем GIF с уменьшенным цветом, хотя PNG может хранить версию с уменьшенным цветом как файл с палитрой сопоставимого размера. И наоборот, некоторые инструменты при сохранении изображений в формате PNG автоматически сохраняют их как truecolor, даже если исходные данные используют только 8-битный цвет, что приводит к излишнему раздуванию файла. Оба фактора могут привести к неправильному представлению файлов PNG больше, чем эквивалентные файлы GIF.
Для оптимизации файлов PNG доступны различные инструменты; они делают это следующим образом:
Ниже представлено простое сравнение их функций.
Оптимизатор | Удаление фрагментов | Уменьшение цвета | Фильтрация | Повторное использование фильтра | Несколько испытаний фильтров за один прогон | Deflater |
---|---|---|---|---|---|---|
advpng | Да | No | 0 | No | Н / Д | (несколько) |
advdef | No | No | Повторно использует предыдущий набор фильтров | Всегда | N/A | (несколько) |
OptiPNG | Да | Да | 0–4 или адаптивный | No | Да | zlib |
pngcrush | Да | Да | 0–4 или адаптивный | No | Да | zlib |
pngout | Да | Да | 0–4 или адаптивный | Да | No | kzip |
zopflipng | Да | Да | 0–4 или адаптивный с 2 разными алгоритмами или грубым способом | Да | Да | zopfli |
До появления zopflipng хороший способ на практике для выполнения оптимизации png использовать комбинацию из 2 инструментов для оптимального сжатия: один, который оптимизирует фильтры (и удаляет вспомогательные фрагменты) и тот, который оптимизирует DEFLATE. Хотя pngout предлагает и другое, в одном запуске можно указать только один тип фильтра, поэтому его можно использовать с инструментом-оболочкой или в сочетании с optipng или pngcrush, действуя как re -deflater, как и advdef.
Для удаления вспомогательных фрагментов большинства инструментов оптимизации PNG установите возможность удаления всех данных цветокоррекции из файлов PNG (гамма, баланс белого, цветового профиля ICC, стандартный цветовой профиль RGB). Это часто приводит к гораздо меньшим размерам файлов. Например, с помощью pngcrush для этих следующих следующих линий строки:
pngcrush -rem gAMA -rem cHRM -rem iCCP -rem sRGB InputFile.png OutputFile.png
Вспомогательные фрагменты также могут быть удалены без потерь с помощью бесплатных программ Win32. PNGExtra.
OptiPNG, pngcrush, pngout и zopflipng - все варианты применяются один из типов фильтров 0–4 глобально (с использованием одного типа фильтра для всех строк) или с "псевдофильтр» (пронумерованный 5), который для каждой строки выбирает один из типов фильтров 0–4 с использованием адаптивного алгоритма. Zopflipng предлагает 3 различных адаптивных метода, включая поиск методом перебора, который пытается оптимизировать фильтрацию.
pngout и zopflipng предоставляет возможность
OptiPNG, pngcrush и zopflipng использовать варианты, позволяющие опробовать различные стратегии фильтрации для одного запуска и выбрать лучшую. коммерческая версия pngoutwin поддерживает.
zopfli и LZMA SDK использовать DEFLATE, которые производят более высокие сжатия, чем эталонная реализация zlib, за счет снижения производительности. AdvanceCOMP advpng
и advdef
могут использовать любую из этих библиотек для повторного сжатия файлов PNG. Кроме того, PNGOUT содержит собственную проприетарную работу DEFLATE.
advpngне имеет возможности использовать фильтры и всегда использует фильтр 0 глобально (оставляя данные изображения неотфильтрованными); поэтому его не следует использовать там, где фильтрация дает значительную пользу изображению. Напротив, advdefиз того же пакета не имеет дело со структурой PNG и действует как средство повторного дефлятирования, сохраняя все настройки фильтра.
Временная значки, предназначенные для Windows Vista и более поздних версий, могут содержать фрагменты изображений PNG, оптимизация также может быть применена к ним. По крайней мере, один редактор значков , Pixelformer может выполнять специальный проход оптимизации при сохранении файлов ICO, тем самым уменьшая их размеры. (упомянутый выше) также может обрабатывать файлы ICO.
Иконки для macOS могут содержать также субизображения PNG, но такой инструмент недоступен.