Png это: что это, особенности формата и как с ним работать

что это, особенности формата и как с ним работать

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

Содержание

  1. Особенности формата
  2. Где применяется формат PNG 
  3. Краткая история формата PNG 
  4. Какой программой открыть PNG на разных операционных системах
  5. Как создать PNG-файл
  6. Конвертеры PNG-файлов
  7. Плюсы и минусы формата PNG

Особенности формата

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

Пример PNG-картинки с прозрачным фоном в результатах выдачи Google. Источник фото

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

Где применяется формат PNG 

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

Упомянутую выше картинку кошки можно вставить на любой цветной фон, не тратя время на вырезание

Краткая история формата PNG 

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

Какой программой открыть PNG на разных операционных системах

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

Для просмотра PNG-формата на ОС Windows понадобится один из следующих вариантов:

  • любая встроенная утилита для просмотра графики, например приложение «Фотографии» или Microsoft Paint;
  • любой установленный сервис для просмотра графики, например ACDSee;
  • любой веб-браузер;
  • графические редакторы Adobe Illustrator или Photoshop;
  • облачное хранилище Microsoft OneDrive, облака Google Drive, Яндекс. Диск, Mail.ru, Dropbox.

На MacOS:

  • встроенные программы «Фото» и «Просмотр»;
  • браузер Safari;
  • графические редакторы, например ColorStrokes.

На iOS:

  • приложение «Фото»;
  • сторонние редакторы, например Pixelmator;
  • облачные хранилища Google Drive, Яндекс.Диск и др.

На Android:

  • встроенная программа просмотра фото;
  • сторонние графические редакторы, например Adobe Photoshop Express;
  • облачные хранилища.

Как создать PNG-файл

Создать с нуля файл формата PNG несложно, но процесс может занять много времени в первый раз, если вы не веб-дизайнер и непосредственно не связаны с данной профессией. Понадобится графический редактор (например, Photoshop, MS Paint, Procreate и др.), в котором нужно открыть картинку в другом формате или нарисовать ее с нуля, а затем сохранить в PNG. В Photoshop это делается через опцию «Сохранить как» и выбор нужного формата.

Создание PNG в Adobe Photoshop

Конвертеры PNG-файлов

Чтобы конвертировать изображение или файл в PNG-формат, можно, например, использовать следующие инструменты в формате онлайн:

  • AnyMP4;
  • FastStone;
  • Adapter;
  • Pixillion;
  • IMG2GO;
  • XnConvert;
  • ZamZar и др.

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

Плюсы и минусы формата PNG

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

Плюсы формата PNG:

  • С точки зрения цветового диапазона у PNG существуют несколько вариантов цветовой палитры: от 8-битной (256 цветов) до 48-битной (десятки миллионов цветов). Этот факт говорит нам о том, что у PNG очень широкий цветовой диапазон.
  • PNG-файл работает со сжатием без потерь исходного качества или с совсем незначительным ухудшением, которое сложно выделить визуально.
  • Размер изображений достаточно компактный по сравнению с фотоформатами (например, RAW).
  • С помощью уменьшения прозрачности изображения можно добиться его плавного сочетания с фоном, причем интенсивность прозрачности может меняться от максимальной контрастности до полного исчезновения.
  • Если необходимо зафиксировать авторство, то можно добавить в формат необходимые метаданные.

Минусы формата PNG:

  • невозможность анимировать картинку;
  • на данный момент нельзя в один файл сохранить несколько изображений;
  • PNG-файлы зачастую весят больше, чем JPEG и GIF.

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

ИСКРА —
неделя знакомства
с дизайн-профессиями

бесплатно

ИСКРА —
неделя знакомства
с дизайн-профессиями

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

разжечь искру

PNG — not GIF! / Хабр

Доброго времени суток!
Вам когда-нибудь хотелось узнать как устроены файлы PNG? Нет? А я все равно расскажу.
Формат PNG(Portable Network Graphics) был изобретен в 1995 году, чтобы стать заменой GIF, а уже в 1996, с выходом версии 1.0, он был рекомендован W3C, в качестве полноправного сетевого формата. На сегодняшний день PNG является одним из основных форматов веб-графики.

Под катом вы найдете общее описание строения PNG-файла, некоторое количество картинок-схем, препарирование в hex-редакторе, и, конечно, ссылку на спецификацию.

Общее строение

Структура PNG в самом общем виде представлена на следующем рисунке.

То есть файл состоит из подписи и некоторого количества блоков(чанков, chunks), каждый из которых несет в себе некоторую информацию (спасибо КО!). Но почему подпись нельзя считать одним из чанков? Давайте разберемся поподробнее.

Подпись файла

Подпись PNG-файла всегда одинакова, состоит из 8 байт, и представляет собой (в hex-записи)

89 50 4E 47 0D 0A 1A 0A

Что же это означает?

  • 89 — non-ASCII символ. Препятствует распознаванию PNG, как текстового файла, и наоборот.
  • 50 4E 47 — PNG в ASCII записи.
  • 0D 0A — CRLF (Carriage-return, Line-feed), DOS-style перевод строки.
  • 1A — останавливает вывод файла в DOS режиме (end-of-file), чтобы вам не вываливалось многокилобайтное изображение в текстовом виде.
  • 0A — LF, Unix-style перевод строки.
Chunks

Чанки — это блоки данных, из которых состоит файл. Каждый чанк состоит из 4 секций.


Разберем эти секции по порядку.

Длина

Ну, с длиной вроде все ясно. Просто числовое значение длины блока данных.

Тип (имя)

С типом немного поинтересней. Тип представляет собой 4 чувствительных к регистру ASCII-символа. Регистры символов (пятый бит в числовой записи символа) в имени чанка различаются неспроста — это флаги, которые сообщают декодеру некоторую дополнительную информацию.

  • Регистр первого символа определяет является ли данный чанк критическим(верхний регистр) или вспомогательным(нижний регистр). Критические чанки должны распознаваться каждым декодером. Если декодер встречает критический чанк, тип которого не может распознать, он обязан завершить выполнение с ошибкой.
  • Регистр второго символа задает «публичность»(верхний регистр) или «приватность»(нижний регистр) чанка. «Публичные» чанки — официальные, задокументированные, распознаваемые большинством декодеров. Но если вдруг вам для каких-то своих нужд понадобится кодировать специфическую информацию, то просто в имени чанка сделайте второй символ маленьким.
  • Регистр третьего символа оставлен для будущих свершений. Предполагается, что он будет использоваться для дифференциации различных версий стандарта. Для версий 1.0 и 1.1 третий символ должен быть большим. Если он (внезапно!) оказался маленьким, все нынешние декодеры должны поступать с чанком, так же как и с любым другим не распознанным (то есть выходить с ошибкой если чанк критический, или пропускать в противном случае).
  • Регистр же четвертого символа означает возможность копирования данного чанка редакторами, которые не могут его распознать. Если регистр нижний, чанк может быть скопирован, вне зависимости от степени модификации файла, иначе (верхний регистр) он копируется только в случае, когда при модификации не были затронуты никакие критические чанки.

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

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

  • IHDR — заголовок файла, содержит основную информацию о изображении. Обязан быть первым чанком.
  • PLTE — палитра, список цветов.
  • IDAT — содержит, собственно, изображение. Рисунок можно разбить на несколько IDAT чанков, для потоковой передачи. В каждом файле должен быть хотя бы один IDAT чанк.
  • IEND — завершающий чанк, обязан быть последним в файле.

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

  • bKGD — этот чанк задает основной фоновый цвет.
  • cHRM используется для задания CIE 1931 цветового пространства.
  • gAMA — определяет гамму.
  • hIST — в этом чанке может храниться гистограмма или общее содержание каждого цвета в изображении.
  • iCCP — цветовой профиль ICC
  • iTXt — содержит текст в UTF-8, возможно сжатый, с необязательной языковой меткой. iTXt чанк с ключевым словом ‘XML:com.adobe.xmp’ может содержать Extensible Metadata Platform (XMP).
  • pHYs — содержит предполагаемый размер пикселя и/или отношение сторон изображения.
  • sBIT (significant bits) — определяет «цветовую точность» (color-accuracy) изображения (черно-белое, полный цвет, черно-белое с прозрачностью и т.д.), для более простого декодирования.
  • sPLT — предлагает палитру для использования, если полный спектр цветов недоступен.
  • sRGB — свидетельствует о использовании стандартной sRGB схемы.
  • sTER — индикатор стереоскопических изображений.
  • tEXt — может содержать текст в ISO/IEC 8859-1 формате, с одной name=value парой для каждого чанка.
  • tIME — хранит дату последнего изменения изображения.
  • tRNS — содержит информацию о прозрачности.
  • zTXt — сжатый текст, с теми же ограничениям, что и tEXt.

Более подробную информацию можно найти в спецификации.

CRC

Контрольная сумма CRC-32. Кстати на днях был топик о ее подсчете в Windows.

Минимальный PNG

С общей структурой разобрались. Теперь разберем содержание обязательных чанков. Но какие из них обязательные (не критические, критические обязаны распознаваться декодером, а не присутствовать в каждом файле), и как выглядит минимальный PNG-файл? А вот как:

IHDR

Блок данных в IHDR содержит следующие поля:

  • Ширина, 4 байта
  • Высота, 4 байта
  • Битовая глубина (bit depth), определяет количество бит на каждый сэмпл(не пиксель), 1 байт
  • Тип цвета, состоит из 3 флагов 1 (используется палитра), 2 (используется цвет, не монохромное изображение), and 4 (присутствует альфа-канал), 1 байт
  • Метод сжатия. На данный момент доступно только значение 0 — сжатие по алгоритму deflate. Если значение отлично от 0, чанк считается нераспознанным, и декодер рапортует об ошибке. 1 байт
  • Метод фильтрации. Так же, как и в случае сжатия, на данный момент может быть только нулем.
    1 байт
  • Interlace(переплетение) метод. Определяет порядок передачи данных. На данный момент доступно 2 значения: 0 (no interlace) и 1 (Adam7 interlace). 1 байт

Adam7 interlacing прекрасно демонстрирует картинка из википедии (да-да, GIF в статье про PNG):

IEND

Сигнализирует о конце файла, блок данных этого чанка не содержит ничего.

IDAT

Содержит данные, закодированные, в соответствии с полем метода сжатия в заголовке. Алгоритм декодирования выходит за рамки данной статьи (однако если будут желающие, может появиться в следующей), но в довольно хорошо (и по-русски) описан здесь.

Таким образом, простейший PNG-файл (на примере ) выглядит следующим образом.

Заключение

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

Топик на хабре про строение JPEG: habrahabr.ru/blogs/algorithm/102521
Топик на хабре про строение GIF: habrahabr.ru/blogs/algorithm/127083

Спасибо за внимание, буду рад любой критике!

Что такое файл PNG? Как открыть или преобразовать формат файла

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

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

Что такое PNG-файл?

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

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

Вот основные характеристики формата PNG.

  • Формат, используемый в Интернете: Многие веб-сайты используют PNG для отображения изображений на своих веб-страницах.
  • Без потерь: В отличие от многих других форматов файлов, включая JPG, PNG использует алгоритм сжатия без потерь, что обеспечивает высокое качество изображения.
  • Поддерживает прозрачность: PNG позволяет задать прозрачный фон, что очень важно для иллюстраторов и графических дизайнеров. Это позволяет размещать нестандартные изображения, иллюстрации и логотипы поверх фонового цвета.
  • Без анимации : В отличие от старого формата GIF (который также не имеет потерь), изображения PNG не поддерживают циклическую анимацию.
Изображения PNG могут иметь прозрачный фон, который позволяет объекту плавать над любым фоном, на котором они расположены. Дэйв Джонсон

Как открывать файлы PNG

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

Это означает, что если вы хотите просмотреть файл PNG, вам просто нужно дважды щелкнуть его, и он должен открыться в средстве просмотра по умолчанию на вашем компьютере. Вы также можете просмотреть файл PNG, перетащив его в любой веб-браузер (или используйте CTRL + O, чтобы найти файл, а затем открыть его в браузере).

Дважды щелкните PNG, чтобы открыть его в средстве просмотра изображений Windows по умолчанию. Дэйв Джонсон

Список программ, которые могут отображать файлы PNG, почти бесконечен, но вот краткий список вариантов:

  • Microsoft Paint (входит в состав Windows)
  • Adobe Photoshop
  • IrfanView
  • FastStone Image Viewer
  • XnView

Как конвертировать файлы PNG, у вас не должно возникнуть проблем с форматом PNG

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

Хорошей новостью является то, что почти любая графическая программа, которая отображает файл PNG, позволит вам преобразовать его в другой формат, такой как JPG, и по большей части все они работают по существу одинаково. Например, вот как преобразовать файл PNG в Microsoft Paint:

1. В Paint откройте файл PNG, который вы хотите преобразовать.

2. Нажмите Файл , затем Сохранить как и выберите формат, в который вы хотите преобразовать изображение, например JPG.

3. Назовите файл и нажмите Сохранить .

Вы можете преобразовать PNG в другой формат, используя команду «Сохранить как» в редакторе фотографий. Дэйв Джонсон

Вы также можете использовать бесплатный онлайн-конвертер файлов, например Convertio. Чтобы использовать Convertio:

1. Нажмите Выберите «Файлы» и выберите файл PNG.

2. В раскрывающемся меню справа от до выберите формат файла, в который вы хотите преобразовать его (например, JPG).

3. Щелкните Преобразовать .

4. Через мгновение файл будет завершен. Нажмите Загрузить и сохраните файл на свой компьютер.

Convertio — это простой способ конвертировать файлы PNG в веб-браузере. Дэйв Джонсон

Дэйв Джонсон

Внештатный писатель

Дэйв Джонсон — технический журналист, который пишет о потребительских технологиях и о том, как индустрия трансформирует спекулятивный мир научной фантастики в современную реальную жизнь. Дэйв вырос в Нью-Джерси, прежде чем поступить в ВВС, чтобы управлять спутниками, преподавать космические операции и планировать космические запуски. Затем он провел восемь лет в качестве руководителя отдела контента в группе Windows в Microsoft. Как фотограф Дэйв фотографировал волков в их естественной среде обитания; он также инструктор по подводному плаванию и соведущий нескольких подкастов. Дэйв является автором более двух десятков книг и участвовал во многих сайтах и ​​публикациях, включая CNET, Forbes, PC World, How To Geek и Insider.

ПодробнееПодробнее

Спецификация

PNG: Обоснование Спецификация

PNG: Обоснование

REC-png.html

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

01 октября 1996 г.
Предыдущая страница
Следующая страница
Содержание
(Это приложение не является частью официальной спецификации PNG.)

В этом приложении приводится обоснование некоторых проектных решений. в PNG. Многие из этих решений были предметом серьезного дебаты. Авторы свободно допускают, что другая группа могла бы сделать разные решения; однако мы считаем, что наш выбор оправдано и последовательно.

12.1. Почему новый формат файла?

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

12.2. Почему эти особенности?

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

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

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

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

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

12.3. Почему не эти функции?

Некоторые функции были намеренно исключены из PNG. Эти варианты были сделаны для упрощения реализации PNG, обеспечения переносимости и взаимозаменяемость и сделать формат настолько простым и надежным, насколько возможно для пользователей. В частности:
  • Нет несжатого варианта PNG. Можно хранить несжатые данные, используя только несжатые блоки deflate (функция обычно используется, чтобы гарантировать, что deflate не делает несжимаемым данные значительно больше). Однако программное обеспечение PNG должно поддерживать полную сдувать/надувать; любое программное обеспечение, которое не совместимо с PNG стандарт. Две наиболее важные особенности PNG — переносимость и сжатие — являются абсолютными требованиями для онлайн-приложений, и пользователи требуют их. Неспособность поддерживать компромиссы полного сдувания/надувания обе эти цели.
  • В PNG нет сжатия с потерями. Существующие форматы, такие как JFIF уже хорошо справляется со сжатием с потерями. Кроме того, доступные потери методы сжатия (например, JPEG) далеко не надежны — плохой выбор уровня качества может испортить изображение. Чтобы избежать пользователя путаницу и непреднамеренную потерю информации, мы считаем, что лучше всего строго разделяйте форматы с потерями и без потерь. Кроме того, сжатие с потерями сложен в реализации. Добавление поддержки JPEG в декодер PNG может увеличить его размер на порядок. Это бы безусловно, приведет к тому, что некоторые декодеры не будут поддерживать эту функцию, которая разрушит нашу цель взаимозаменяемости.
  • Нет поддержки CMYK или других необычных цветовых пространств. Опять же, это во имя продвижения мобильности. CMYK, в в частности, слишком зависит от устройства, чтобы быть полезным в качестве портативного представление изображения.
  • Не существует стандартного фрагмента для просмотра миниатюр изображений. В обсуждения с поставщиками программного обеспечения, которые используют эскизы в своих продуктов стало ясно, что большинство из них не будет использовать «стандартный» фрагмент миниатюры. Во-первых, у каждого продавца своя идея того, какими должны быть размеры и характеристики миниатюры быть. Кроме того, некоторые поставщики хранят эскизы в отдельных файлах. для размещения различных форматов изображений; они не перестанут это делать просто из-за фрагмента эскиза в одном новом формате. Собственный фрагменты, содержащие эскизы конкретных поставщиков, кажутся более практичнее, чем обычный формат миниатюр.
Стоит отметить, что приватные расширения PNG могут легко добавлять эти функции. Однако мы не будем включать их в состав базовый стандарт PNG.

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

12.4. Почему бы не использовать формат X?

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

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

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

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

JPEG без потерь не подходит, так как не обеспечивает хранение индексированных цветных изображений. Кроме того, его истинный цвет без потерь сжатие часто хуже, чем PNG.

12.5. Порядок байтов

Был задан вопрос, почему PNG использует сетевой порядок байтов. Мы выбрали один порядок байтов и использовали его последовательно. Какой именно порядок не имеет большого значения, но сетевой порядок байтов имеет то преимущество, что подпрограммы для преобразования туда и обратно уже доступны на любом платформа, поддерживающая работу в сетях TCP/IP, включая все платформы ПК. Функции тривиальны и будут включены в эталонной реализации.

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

Двухмерная схема чересстрочной развертки PNG более сложна. для реализации, чем построчное чередование GIF. Это также стоит немного больше в размере файла. Тем не менее, это дает начальное изображение в восемь раз быстрее, чем GIF (первый проход передает только 1/64 пикселей по сравнению с 1/8 для GIF). Хотя это исходное изображение является грубым, оно полезно во многих ситуациях. Например, если изображение представляет собой карту изображений World Wide Web, пользователь видел раньше, первого прохода PNG часто бывает достаточно, чтобы определить куда нажать. Схема PNG также выглядит лучше, чем GIF, потому что горизонтальное и вертикальное разрешение никогда не отличаются более чем на коэффициент из двух; это позволяет избежать странного «растянутого» вида при чересстрочной развертке GIF-файлы заполняются путем репликации строк сканирования. Предварительные результаты показать, что мелкий текст в чересстрочном изображении PNG обычно читается примерно в два раза быстрее, чем в эквивалентном GIF, т. е. после Пятый проход PNG или 25% данных изображения вместо GIF третий проход или 50%. Это снова связано с более сбалансированным увеличением PNG. в разрешении.

12.7. Почему гамма?

Может показаться естественным стандартизировать хранение выборочных значений, которые линейно пропорциональны интенсивности света (то есть имеют гамму 1,0). Но на самом деле обычно изображения имеют гамму меньше 1. Для этого есть три веские причины:
  • По причинам, подробно описанным в руководстве по гамме, все видеокамеры применяют функцию «гамма-коррекции» интенсивности информация. Это приводит к тому, что видеосигнал имеет гамму около 0,5 относительно интенсивности света в исходной сцене. Таким образом, изображения, полученные видеозахватом кадра, уже имеют гамму около 0,5.
  • Человеческий глаз имеет нелинейный отклик на интенсивность, поэтому линейное кодирование образцов либо тратит коды образцов в ярких областях изображение или предоставляет слишком мало примеров кодов, чтобы избежать артефактов полос. в темных областях изображения или в обоих случаях. Не менее 12 бит на выборку необходимы, чтобы избежать видимых артефактов при линейном кодировании с диапазоном яркости изображения 100:1. Гамма изображения в диапазоне от 0,3 до 0,5 распределяет выборочные значения образом, который примерно соответствует реакции глаза, так что 8 бит/выборка достаточны, чтобы избежать артефактов, вызванных недостаточным точность выборки почти на всех изображениях. Это делает «гамма-кодирование» намного лучшим способом хранения цифровых изображений, чем более простое линейное кодирование.
  • Многие изображения создаются на ПК или рабочих станциях без гаммы. аппаратная коррекция и никакое программное обеспечение, готовое обеспечить гамму коррекция же. В этих случаях изображения имели свои освещение и цвет выбраны так, чтобы лучше всего смотреться на этой платформе — они можно рассматривать как встроенную «ручную» гамма-коррекцию. Чтобы увидеть, что задумал автор изображения, необходимо рассматривать такие изображения как имеющие file_gamma значение в диапазоне 0,4-0,6, в зависимости от освещения помещения Уровень, на котором работал автор.

На практике значения гаммы изображения около 1,0 и около 0,5 являются оптимальными. широко встречается. Старые стандарты изображений, такие как GIF, часто не учитывают за этот факт. Стандарт JFIF указывает, что изображения в этом формате следует использовать линейные выборки, но многие изображения JFIF, найденные в Интернете на самом деле гамма где-то около 0,4 или 0,5. разнообразие найденных изображений и разнообразие систем, которые люди отображают их включения привели к широко распространенным проблемам с отображением изображений «слишком темный» или «слишком светлый».

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

  • Гамма-коррекция по своей природе имеет потери из-за ошибок квантования и округления. Таким образом, требование преобразования во время кодирования приводит к необратимым потеря. Поскольку PNG предназначен для хранения данных без потерь, это нежелательно; мы должны хранить немодифицированные исходные данные.
  • Кодер может не знать значение исходной гаммы. Если декодер делает гамма-коррекцию во время просмотра, может регулировать гамму (изменение отображаемой яркости) в ответ на обратную связь от человеческий пользователь. У энкодера нет такой возможности.
  • На какой бы «стандартной» гамме мы ни остановились, она будет неправильной для некоторые дисплеи. Следовательно, зрителям все равно потребуется гамма-коррекция. способность.
Поскольку всегда будут изображения без гаммы или с неправильным зарегистрированная гамма, хорошие зрители должны будут включить гамму код настройки в любом случае. Таким образом, гамма-коррекция во время просмотра правильный путь.

См. Учебное пособие по гамме для получения дополнительной информации.

12.

8. Альфа без предварительного умножения PNG использует «несвязанный» или «не предварительно умноженный» альфа-канал, так что изображения с отдельными масками прозрачности могут храниться без потерь. Другой распространенный метод, «предварительное умножение альфа-канала», сохраняет значения пикселей. предварительно умноженный на альфа-фракцию; по сути, изображение уже композицию на черном фоне. Любые данные изображения, скрытые маска прозрачности при этом безвозвратно теряется, т.к. умножение на нулевое значение альфа всегда дает ноль.

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

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

12.9. Фильтрация

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

Алгоритмы фильтрации определены для работы с байтами, а не с пиксели; это обеспечивает простоту и скорость с очень небольшими затратами в производительность сжатия. Тесты показали, что фильтрация обычно неэффективен для изображений с менее чем 8 битами на выборку, поэтому обеспечение попиксельной фильтрации для таких изображений было бы бессмысленным. Для 16-битных данных побайтовая фильтрация почти так же эффективна, как попиксельная фильтрация, поскольку MSB прогнозируются из соседних MSB, и LSB прогнозируются из соседних LSB.

Кодеру разрешено менять фильтры для каждой новой строки развертки. Это не создает дополнительных сложностей для декодеров, поскольку декодер в любом случае требуется содержать логику дефильтрации для каждого типа фильтра. Единственная стоимость — это дополнительный байт на строку сканирования при предварительном сжатии. поток данных. Наши тесты показали, что при выборе одного и того же фильтра для всех строк развертки этот лишний байт сжимается почти до нуля, поэтому затраты на хранение невелики по сравнению с указанным фиксированным фильтром для всего изображения. И потенциальные преимущества адаптивной фильтрации слишком велики, чтобы их игнорировать. Даже с упрощенным выбором фильтра эвристика, обнаруженная на данный момент, адаптивная фильтрация обычно превосходит фиксированные фильтры. В частности, адаптивный фильтр может изменить поведение для последовательных проходов чересстрочного изображения; фиксированный фильтр не может.

12.10. Текстовые строки

Большинство форматов графических файлов включают возможность хранения некоторых текстовых информацию вместе с изображением. Но многим приложениям нужно больше чем это: они хотят иметь возможность хранить несколько идентифицируемых частей текста. Например, база данных, использующая файлы PNG для хранения медицинских Рентгеновские снимки, скорее всего, захотят включить имя пациента, имя врача, и т. д. Простым способом сделать это в PNG было бы изобрести новый частные блоки, содержащие текст. Недостаток такого подхода заключается в том, что другие приложения не будут знать, что находится в этих куски, и просто проигнорировал бы их. Вместо этого мы рекомендуем текстовое информация должна храниться в стандартных фрагментах текста с подходящими ключевые слова. Использование tEXt сообщает любому просмотрщику PNG, что фрагмент содержит текст, который может быть интересен пользователю-человеку. Таким образом, человек просмотр файла с помощью другого средства просмотра по-прежнему сможет увидеть текст, и даже понять, что это такое, если ключевые слова разумно самоочевидно. (Для этого мы рекомендуем использовать ключевые слова, не аббревиатуры, которые будет трудно понять человеку. Экономия нескольких байтов на ключевом слове — это ложная экономия.)

В качестве компромисса был выбран набор символов ISO 8859-1 (Latin-1). между функциональностью и портативностью. Некоторые платформы не могут отображать что-либо большее, чем 7-битные символы ASCII, в то время как другие может обрабатывать символы за пределами набора Latin-1. Мы чувствовали, что Latin-1 представляет широко полезный и достаточно переносимый набор символов. Latin-1 — это прямое подмножество наборов символов, обычно используемых в популярные платформы, такие как Microsoft Windows и X Windows. Он может также можно обрабатывать в системах Macintosh с помощью простого переназначения персонажи.

В настоящее время не предусмотрен текст, использующий символы наборы отличные от Latin-1. Мы признать, что потребность в других наборах символов возрастет. Однако PNG уже требует, чтобы программисты реализовали количество новых и незнакомых функций и текстовое представление не является основной целью PNG. Так как PNG предусматривает создание и публичная регистрация новых вспомогательных фрагментов, представляющих общий интерес, мы ожидаем, что фрагменты текста для других наборов символов, например как Unicode, в конечном итоге будет зарегистрировано и будет постепенно увеличиваться в популярность.

12.11. Подпись файла PNG

Первые восемь байтов PNG-файла всегда содержат следующее: ценности:
   (десятичное) 137 80 78 71 13 10 26 10
   (шестнадцатеричный) 89 50 4e 47 0d 0a 1a 0a
   (обозначение ASCII C) \211 P N G \r \n \032 \n
 

Эта подпись идентифицирует файл как файл PNG и обеспечивает немедленное обнаружение распространенных проблем с передачей файлов. Первые два байта различают файлы PNG в системах, которые ожидают первые два байта для уникальной идентификации типа файла. Первый байт выбрано как значение, отличное от ASCII, чтобы уменьшить вероятность того, что текстовый файл может быть неправильно распознан как файл PNG; также он ловит плохой файл передает этот чистый бит 7. Байты со второго по четвертый называют формат. Последовательность CR-LF отлавливает плохие передачи файлов, которые изменяют новую строку последовательности. Символ Control-Z останавливает отображение файла в MS-DOS. Окончательный перевод строки проверяет обратную трансляцию CR-LF. проблема.

Декодер может дополнительно проверить, что следующие восемь байтов содержат Заголовок фрагмента IHDR с правильной длиной фрагмента; это будет поймать плохие передачи, которые удаляют или изменяют нулевые (нулевые) байты.

Обратите внимание, что в подписи нет ни номера версии, ни в любом месте файла. Это сделано намеренно: механизм чанков обеспечивает лучший и более гибкий способ обработки расширений формата, т.к. объяснил в Соглашения об именах чанков.

12.12. Компоновка блоков

Дизайн фрагментов позволяет декодерам пропускать нераспознанные или неинтересные куски: просто необходимо пропустить соответствующее количество байт, как определено из поля длины. 931)-1 байт позволяет избежать возможных проблем для реализации, которые не могут удобно обрабатывать 4-байтовые беззнаковые значения. На практике куски обычно будут намного короче.

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

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

12.13. Соглашения об именах блоков

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

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

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

При изменении файла PNG может потребоваться удаление некоторых вспомогательных фрагментов. изменены, чтобы отразить изменения в других фрагментах. Например, гистограмма Чанк необходимо изменить, если данные изображения изменяются. Если редактор файлов не распознает куски гистограммы, копируя их вслепую на новый выходной файл некорректен; такие куски должны быть удалены. бит свойства safe/unsafe позволяет помечать вспомогательные фрагменты соответственно.

Не все возможные сценарии модификации охватываются безопасным/небезопасным семантика. В частности, куски, которые зависят от общего файла содержимое не поддерживается. (Примером такого чанка является индекс расположения чанков IDAT в файле: добавление комментария чанк непреднамеренно нарушит индекс.) Определение таких чанков обескураженный. Если это абсолютно необходимо для конкретного приложения, такие фрагменты могут быть сделаны критическими фрагментами с последующей потерей переносимость на другие приложения. Как правило, вспомогательные фрагменты могут зависят от критических фрагментов, но не от других вспомогательных фрагментов. Это ожидается, что взаимозависимая информация должна быть помещена в один кусок.

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

Та же техника может быть полезна и для других целей. Например, если программа полагается на то, что палитра находится в определенном порядке, она может сохранить частный фрагмент, содержащий CRC фрагмента PLTE. Если это значение совпадает при повторном считывании файла, то оно предоставляет высокая уверенность в том, что палитра не была подделана. Примечание что нет необходимости помечать приватный чанк как небезопасный для копирования когда используется этот метод; таким образом, такой приватный чанк может выжить другое редактирование файла.

12.14. Палитра гистограмм

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

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

Опубликовано в категории: Разное

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *