Структура файла png: PNG — not GIF! / Хабр

Содержание

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 Format


Тип Растровый
Цвета От 1-бита до 48-бит
Сжатие Разновидность LZ77
Максимальный размер изображения 2Г x 2Г пикселей
Формат чисел "Старший в младшем"
Больше одного изображения в файле Нет
Разработчик
Томас Бутелл, Том Лейн и многие другие
Платформы Все
Поддерживается приложениями Многими коммерческими пакетами и бесплатными пакетами с коммерческой лицензией
См. также GIF
Применение:
Формат PNG позволяет хранить без потерь изображения от двухуровневых до 48-битовых полноцветных. Он специально предназначен для передачи графических данных в сети.

Комментарии:
Формат PNG хорошо продуман и разработан, и скорее всего он заменит формат GIF от фирмы CompuServe.

Спецификация формата PNG

Исходники


PNG (произносится "Пинг") - растровый формат, предназначенный для хранения и передачи растровых изображений: черно-белых и альфа данных - до 16 бит, а цветных - до 48 бит (truecolor). Он использует прогрессивный метод сжатия без потерь, позволяет сохранять в файле палитру, текстовую информацию и обеспечивает прозрачность.

Содержание:
Организация файла
Детальное описание
Дополнительная информация

Формат PNG создан, как альтернатива формату GIF от CompuServe, потому что фирма CompuServe, владея правами на этот формат, запрещало свободное использование метода сжатия LZW (сжатие, используемое в GIF - файле) в программных продуктах. (См. статьи на тему юридических аспектов метода сжатия LZW в Главе 9, Сжатие Данных.) В шутку аббревиатуру PNG рекурсивно расшифровывают - "PNG's Not GIF" ("ПНГ - Не ГИФ").

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

PNG и GIF89a обладают следующими свойствами:

  • Формат организован в виде потока данных
  • "Сжатие без потерь"
  • Позволяет хранить индексированные изображения с палитрой до 256 цветов
  • Прогрессивное отображение чересстрочных данных
  • Поддержка "прозрачного цвета"
  • Возможность хранить данные общего и ограниченного доступа.
  • Не зависят от "железа" и платформы

Ниже перечислены преимущества PNG над GIF в общих чертах:

  • Метод сжатия данных не обременён юридическими проблемами
  • Более быстрое прогрессивное отображение чересстрочных схем
  • Расширенные возможности хранения пользовательских данных

А следующие возможности PNG в формате GIF вообще отсутствуют:

  • Хранение полноцветных 48-битовых изображений.
  • Хранение 16-битовых чёрно-белых изображений
  • Полный Альфа-канал
  • Указатель на контрастность
  • CRC - метод обнаружения ошибок в потоке данных
  • Стандартный инструментарий для разработки приложений чтения и записи PNG
  • Стандартный набор тестовых изображений для проверки этих приложений

Но, всё же, некоторые особенности GIF не найдены в PNG версии 1.0:

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

В отличие от многих других форматов, создатели которых (2-3 программиста) не заботятся о дальнейшем его развитии, PNG был создан особым комитетом, в состав которого вошли заинтересованные в этом специалисты и противники GIF (в список авторов спецификации PNG версии 1.0 вошли 23 фамилии) во главе с Томасом Бутеллом.

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

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

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

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

Заголовочный блок (IHDR)

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

Блок палитры (PLTE)

Палитра несёт в себе данные таблицы цветов, связанный с данными изображения. Этот блок присутствует только если данные изображения используют палитру и должен находиться перед этими данными.

Данные изображения (IDAT)

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

Замыкающий блок изображения (IEND)

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

Среди этих блоков, IHDR, IDAT и IEND должны присутствовать в любом потоке данных PNG.

Рассмотрим 2 типичных вида PNG файлов: один с цветовой палитрой, один без.

Подпись

Блок IHDR

Блок IDAT

Блок IEND

Подпись

Блок IHDR

Блок PLTE

Блок IDAT

Блок IEND

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

Необязательные блоки, именуемые вспомогательные блоки, могут быть игнорированы программой чтения и необязательны для включения в файл программами записи PNG файлов. Тем не менее, отсутствие поддержки вспомогательных блоков может сказаться на непрвальном отображении изображения PNG. Оно может быть слишком затемнённым, слишком светлым или вообще отображаться в совершенно другом виде, не задуманном создателем этого изображения. Рекомендуется поддержка и использование большинства стандартных и вспомогательных блоков (в частности, блока Контрастности Изображения) программами, работающими с PNG.

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

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

Таблица PNG-1: Блоки PNG

Тип блока

Многократный

Необязательный

Положение в файле

IHDR

Нет

Нет

Первый блок

cHRM

Нет

Да

Перед PLTE и IDAT

gAMA

Нет

Да

Перед PLTE и IDAT

sBIT

Нет

Да

Перед PLTE и IDAT

PLTE

Нет

Да

Перед IDAT

bKGD

Нет

Да

После PLTE и перед IDAT

hIST

Нет

Да

После PLTE и перед IDAT

tRNS

Нет

Да

После PLTE и перед IDAT

oFFs

Нет

Да

Перед IDAT

pHYs

Нет

Да

Перед IDAT

sCAL

Нет

Да

Перед IDAT

IDAT

Да

Нет

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

tIME

Нет

Да

В любом месте

tEXt

Да

Да

В любом месте

zTXt

Да

Да

В любом месте

fRAc

Да

Да

В любом месте

gIFg

Да

Да

В любом месте

gIFt

Да

Да

В любом месте

gIFx

Да

Да

В любом месте

IEND

Нет

Нет

Последний блок

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


typedef struct _PngSignature
{
    BYTE Signature[8];  /* Идентификатор (всегда 89504E470D0A1A0Ah) */
} PNGSIGNATURE;

Подпись содержит 8 байт со значениями: 89h 50h 4Eh 47h 0Dh 0Ah 1Ah 0Ah ("‰PNG\r\n\n"). Эта на вид беспорядочная последовательность значений имеет довольно много практических назначений. Значение первого байта - 89h - 8-битовое значение, указывающее на то, что файл содержит двоичные данные. Если бы каждый 8-й бит был бы вырван из файла (7-битовый канал данных), то первый байт принял бы значение 09h, что указало бы на причину, по которой испорчен файл.

Остальные байты имеют следующее назначение:

  • Позволяют визуально определить поток данных (50h 4Eh 47h - "PNG")
  • Определяют передачу файла, изменяющую последовательность символов "новой строки" ("\r\n" становится "\r", "\n" или "\n\r")
  • Останавливает чтение потока данных PNG в операционной системе MS-DOS (Control-Z [""])
  • Определяет CR/LF преобразовательные ошибки передачи файлов (завершающий символ новой строки)

После подписи следуют 3 или более блоков данных PNG. Все блоки PNG имеют одинаковый основной формат и могут содержать переменное количество данных.


typedef struct _PngChunk
{
    DWORD DataLength;   /* Размер поля данных в байтах */
    DWORD Type;         /* Код, идентифицирующий тип блока */
    BYTE  Data[];       /* Собственно данные, хранящиеся в блоке */
    DWORD Crc;          /* CRC-32 значение полей Type и Data */
} PNGCHUNK;

DataLength - число байтов в поле Data. Это значение может варьироваться от 0 до 231-1.

Type - 4-х байтовый код, идентифицирующий тип хранящихся данных в блоке. Каждый байт в этом поле может содержать значение заглавного или прописного латинского символа таблицы ASCII (A-Z, a-z). На пример, тип блока IHDR будет выражен значением 69484452h в поле Type. Программа чтения PNG должна рассматривать коды Type как 32-битовые буквенные значения, не являющиеся символьными строками. Возможность чтения кодов типов как символов таблицы ASCII существует лишь для удобства человеку.

Поле Data - собственно данные, хранящиеся в блоке. Это поле может иметь нулевую длину, если не существует связанных с ним данных.

Crc - CRC-32 значение, просчитываемое для полей Type и Data. Это значение используется для определения, являются ли данные повреждёнными. В PNG используется алгоритм CRC, определённый в ISO 3309 и ITU-T V.42.

Блоки бывают размером от 12 байт (не содержат данных) до (231-1)+12 байт. Блоки всегда выравниваются по границам байтов, и поэтому никогда не требуется выравнивание заполнением.

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

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

Заголовочный блок

Заголовочный блок содержит информацию о данных изображения в PNG файле. Этот блок должен быть первым блоком в потоке данных PNG и следует непосредственно за подписью PNG. Область данных заголовочного блока составляет 13 байт и имеет следующий формат:


typedef struct _IHDRChunk
{
    DWORD Width;        /* Ширина изображения в пикселях */
    DWORD Height;       /* Высота изображения в пикселях */
    BYTE BitDepth;      /* Количество битов на пиксель и образец */
    BYTE ColorType;     /* Индикатор интерпретации цвета */
    BYTE Compression;   /* Индикатор типа сжатия */
    BYTE Filter;        /* Индикатор типа фильтра */
    BYTE Interlace;     /* Тип использованной схемы чересстрочной развёртки */
} IHDRCHUNK;

Поля Width и Height - высота и ширина растрового изображения в пикселях. Принимают значения от 1 до 231-1.

BitDepth - количество битов на пиксель для изображений с индексированными цветами и количество битов на образец для чёрно-белых изображений и полноцветных изображений (24 бита). У индексированных изображений BitDepth может принимать значения 1, 2, 4 и 8. У чёрно-белых - 1, 2, 4, 8 и 16. У полноцветных изображений без альфа данных, а также у чёрно-белых изображений с альфа данными, BitDepth может принимать только значения 8 и 16.

ColorType определяет способ интерпретации данных изображения. Принимаемые значения (вид изображения): 0 (чёрно-белое), 2 (полноцветное), 3 (индексированное изображение), 4 (чёрно-белое с альфа данными) и 6 (полносветное с альфа данными).

Compression определяет вид сжатия данных изображения. В настоящее время единственное допустимое значение - 0, означающее, что использован метод сжатия Defalte. Другие методы сжатия будут определены в будущих добавлениях PNG.

Filter определяет вид фильтрования, применённый к данным изображения перед сжатием. На сегодняшний день, единственное допустимое значение - 0, означающее, что был применён метод фильтрования adaptive, описанный в спецификации PNG. Другие методы фильтрования будут определены в будущих добавлениях PNG. Значение поля filter не указывает, были ли данные изображения профильтрованы; на это указывает байт filter type в начале каждой строки развёртки. Данные изображения не обязательно должны быть профильтрованы перед сжатием.

Interlace определяет чересстрочный алгоритм, используемый для хранения данных изображения, или, если быть более точным, порядок передачи пиксельных данных. Принимаемые значения - 0 (нет чересстрочности) и 1 (чересстрочность Adam7).

Палитра

Палитра (PLTE) всегда присутствует в потоках данных PNG, содержащих изображения с индексированными цветами (когда поле Color заголовочного блока имеет значение 3). Полноцветные потоки данных PNG (значения поля Color - 2 и 6) также могут содержать палитру, предназначенную для разбития данных изображения на подгруппы приложениями, не поддерживающими полноцветную палитру. Поток данных PNG не может содержать более одной палитры.

Палитра может быть размером от 3 до 768 байт и имеет следующий формат:


typedef struct _PLTEChunkEntry
{
    BYTE Red;           /* Красный компонент (0 = чёрный, 255 = максимум оттенка) */
    BYTE Green;         /* Зелёный компонент (0 = чёрный, 255 = максимум оттенка) */
    BYTE Blue;          /* Синий компонент (0 = чёрный, 255 = максимум оттенка) */
} PLTECHUNKENTRY;
PLTECHUNKENTRY PLTEChunk[];

PLTEChunk - массив, содержащий от 1 до 256 элементов, каждый из которых содержит 3 поля: Red, Green и Blue, хранящие соответственно значения красного, зелёного и синего цветов для данного элемента палитры.

Блок данных изображения

блок данных изображения (IDAT) содержит собственно данные изображения. В соответствии со спецификацией PNG эти данные всегда хранятся в сжатом виде. Данные изображения могут быть разбиты на несколько IDAT блоков, чтобы программе записи PNG было легче буферизировать сжатые данные изображения. У сжатого потока данных нет пределов, потому IDAT блок может быть в размере от 0 до 231-1 байт.

Замыкающий блок изображения

Последний блок потока данных PNG - замыкающий блок изображения (IEND). Этот блок не содержит никаких данных.

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

В PNG v1.0 определено 10 вспомогательных блоков, которые могут присутствовать в потоке данных PNG. Информация некоторых из этих блоков обеспечивает правильную интерпретацию данных изображения (например, Image Gamma - контрастность изображения). Краткое описание формата поля Data каждого их таких блоков приведено ниже. Полная информация об этих блоках содержится в спецификации формата PNG.

Блок Фонового Цвета

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

Формат данных этого блока зависит от формата данных изображения, определяемого значением поля ColorType блок IHDR. Для изображений с индексированными цветами (ColorType = 3), данные длиной 1 байт содержат индекс цвета палитры, используемого в качестве фона.


typedef struct _bKGDChunkEntry
{
    BYTE Index;    /* Индекс цвета фона в палитре */
} BKGDCHUNKENTRY;

В чёрно-белых изображениях с данными или без данных альфа канала (ColorType = 0 или 4), блок цвета фона длиной 2 байта содержит уровень оттенка серого, используемого в качестве цвета фона.


typedef struct _bKGDChunkEntry
{
    WORD Value;   /* Значение уровня серого у фона */
} BKGDCHUNKENTRY;

У полноцветных изображений с данными или без данных альфа канала (ColorType = 2 и 6), блок цвета фона три 2-байтовых значений, определяющих цвет фона в формате RGB.


typedef struct _bKGDChunkEntry
{
    WORD Red;   /* Уровень красного в цвете фона */
    WORD Green; /* Уровень зелёного в цвете фона */
    WORD Blue;  /* Уровень синего в цвете фона */
} BKGDCHUNKENTRY;
Блок Основных Цветов и Белой Точки

Блок Основных Цветов и Белой Точки содержит информацию о RGB значениях, основанных на 1931 CIE цветовом координатном пространстве XYZ. Определены цвета только по осям x и y, и они представлены в виде значений, помноженных на 100 000.


typedef struct _cHRMChunkEntry
{
    DWORD WhitePointX;   /* Значение Белой Точки по x */
    DWORD WhitePointY;   /* Значение Белой Точки по y  */
    DWORD RedX;          /* Значение Красного по x */
    DWORD RedY;          /* Значение Красного по y */
    DWORD GreenX;        /* Значение Зелёного по x */
    DWORD GreenY;        /* Значение Зелёного по y */
    DWORD BlueX;         /* Значение Синего по x */
    DWORD BlueY;         /* Значение Синего по y */
} CHRMCHUNKENTRY;
Блок Контрастности Изображения

Блок контрастности изображения содержит значение изначальной контрастности в соответствии с изначальным изображением. Это значение - контрастность, помноженная на 100 000. Замечание: настоятельно рекомендуется авторами PNG обрабатывать блок контрастности.


typedef struct _gAMAChunkEntry
{
    DWORD Gamma;    /* Значение контрастности */
} GAMACHUNKENTRY;
Блок Гистограммы Изображения

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


typedef struct _hISTChunkEntry
{
    WORD Histogram[];    /* Данные гистограммы */
} HISTCHUNKENTRY;
Блок Фактического Размера в Пикселях

Блок Фактического Размера в Пикселях определяет разрешение, предназначенное для отображения изображения.


typedef struct _pHYsChunkEntry
{
   DWORD PixelsPerUnitX;    /* Пикселей на единицу измерения, ось X */
   DWORD PixelsPerUnitY;    /* Пикселей на единицу измерения, ось X */
   BYTE  UnitSpecifier;     /* 0 = неизвестная, 1 = метрическая единица измерения */
} PHYSCHUNKENTRY;
Блок Значимых Битов

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

Формат данных этого блока может быть 4 разных видов в зависимости от данных изображения, определённых в поле ColorType блока IHDR:


/* Чёрно-белое изображение (ColorType = 0) */
typedef struct _sBITChunkEntry
{
    BYTE GrayscaleBits;    /* Значимые биты чёрно-белого изображения (ColorType 0) */
} SBITCHUNKENTRY;

/* Полноцветное изображение или изображение с индексированными цветами (ColorType = 2 или 3) */
typedef struct _sBITChunkEntry
{
    BYTE RedBits;     /* Значимые биты Красного */
    BYTE GreenBits;   /* Значимые биты Зелёного */
    BYTE BlueBits;    /* Значимые биты Синего */
} SBITCHUNKENTRY;

/* Чёрно-белое изображение с данными альфа канала (ColorType = 4) */
typedef struct _sBITChunkEntry
{
    BYTE GrayscaleBits; /* Значимые биты чёрно-белых данных */
    BYTE AlphaBits;     /* Значимые биты альфа канала */
} SBITCHUNKENTRY;

/* Полноцветное изображение с данными альфа канала (ColorType = 6) */
typedef struct _sBITChunkEntry
{
    BYTE RedBits;     /* Значимые биты Красного */
    BYTE GreenBits;   /* Значимые биты Зелёного */
    BYTE BlueBits;    /* Значимые биты Синего  */
    BYTE AlphaBits;   /* Значимые биты Альфа Канала */
} SBITCHUNKENTRY;
Блок Текстовых Данных

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


typedef struct _tEXtChunkEntry
{
    char Keyword[];      /* Тип информации, содержащейся в поле Text */
    BYTE NullSeparator;  /* Нулевой разделительный символ (NULL) */
    char Text[];         /* Текстовые данные */
} TEXTCHUNKENTRY;

Поле Keyword может быть размером от 1 до 79 байт и может содержать любые печатаемые символы кодовой страницы Latin-1 включая пробелы, кроме нулевого символа (NULL).

Поле NullSeparator - 1 байт со значением 0. Это поле разделяет поля Keyword и Text.

Поле Text - собственно символьные данные, хранящиеся в блоке. Длина этого символа определяется из значения поля DataLength в заголовке блока.

Значение поля Keyword содержит ключевые слова, связанные с данными поля Text. Ниже приведён список ключевых слов, содержащихся в поле Keyword в PNG 1.0:

Название
Автор
Описание
Авторские права
Время создания
Программное обеспечение
Отказ от права
Предупреждение
Исходник
Комментарии

Дополнительные ключевые слова могут быть объявлены через общедоступную регистрацию или могут создаваться отдельными приложениями.

Блок Времени Последнего Изменения Изображения

Блок Времени Последнего Изменения Изображения содержит время последнего изменения изображения (а не время создания) и имеет следующий формат:


typedef struct tIMEChunkEntry
{
    WORD Year;      /* Значение года (например 1996) */
    BYTE Month;     /* Значение месяца (1-12) */
    BYTE Day;       /* Значение дня (1-31) */
    BYTE Hour;      /* Значение часа (0-23) */
    BYTE Minute;    /* Значение минуты (0-59) */
    BYTE Second;    /* Значение секунды (0-60) */
} TIMECHUNKENTRY;
Блок Прозрачности

Блок Прозрачности содержит значение прозрачного (ключевого) PNG изображения, не содержащего соответствующих альфа данных. Значения пикселей для полноцветных и чёрно-белых изображений, совпадающих с прозрачным цветом, считаются прозрачными (альфа значение - 0), остальные же считаются непрозрачными.

Изображения с индексированными цветами содержат массив альфа значений, максимум по одному на элемент палитры. Эти значения прозрачности обрабатываются абсолютно как альфа значения. Элементам палитры, не имеющим значений прозрачности, присваивается значение по умолчанию 255 (абсолютно непрозрачные).

Допустимы 3 формата данных в этом блоке, в зависимости от формата данных изображения, на которые указывает поле ColorType блока IHDR:


/* Чёрно-белое изображение (ColorType = 0) */
typedef struct _tRNSChunkEntry
{
    WORD TransparencyValue;    /* Цвет прозрачности */
} TRNSCHUNKENTRY;

/* Полноцветное изображение (ColorType = 2) */
typedef struct _tRNSChunkEntry
{
    WORD RedTransValue;        /* Красная составляющая цвета прозрачности */
    WORD GreenTransValue;      /* Зелёная составляющая цвета прозрачности */
    WORD BlueTransValue;       /* Синяя составляющая цвета прозрачности */
} TRNSCHUNKENTRY;

/* Изображение с индексированными цветами (ColorType = 3) */
typedef struct _tRNSChunkEntry
{
    BYTE TransparencyValues[];  /* Цветы прозрачности */
} TRNSCHUNKENTRY;
Блок Сжатых Текстовых Данных

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

Данные Изображения

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

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

Значения данных изображения глубиной цвета до 8 бит могут быть преобразованы в цветовую палитру либо сохранены в растровых данных в виде чёрно-белых значений. Полноцветные пиксели всегда хранятся в виде 3-х составляющих (красный, зелёный, синий соответственно). Также 4-я составляющая (Альфа канал) может быть включена в каждый полноцветный пиксель.

Чёрно-белые и цветные индексированные растровые изображения содержат по одной составляющей на пиксель, образуя односоставные пиксели. Каждая составляющая в изображении всегда одного и того же размера. Этот размер называется битовой глубиной, равной количеству битов в составляющей. Одиночная составляющая может быть глубиной от 1 до 16 битов. Для изображений с индексированными цветами, битовая глубина определяет максимальное количество цветов в палитре. Форматом PNG не определяется, но и не устраняется двухуровневое растровое отображение.

Многосоставные пиксели содержат 2 или более составляющих на пиксель. Эти составляющие могут быть 8 и 16 битовые, но все составляющие изображения должны быть одного и того же размера. Многосоставные пиксели могут быть от 16 до 64 битов.

Например, типичный чёрно-белый пиксель содержит одну составляющую. Типичный 24-битовый пиксель в формате RGB - три 8-битовых составляющих, а нетипичный 64-битовый пиксель в формате RGBA будет содержать 4 16-битовых пикселя. Обратите внимание, что односоставные и многосоставные пиксели, использующие отличные от 8- и 16-битовых составляющие, должны использовать составляющие ближайшей допустимой глубины. Например, для хранения 10-битовой составляющей, вы должны использовать 16-битовую. Неиспользуемые биты либо забиваются нолями (не рекомендовано для составляющих глубиной менее 8 бит, но для больших глубин забивание нолями позволит значительно улучшить сжатие), либо линейным увеличением масштаба заполняют диапазон допустимых значений (рекомендовано). Создатели PNG рекомендуют быстрый метод увеличения масштаба путём дублирования самых крайних слева значащих битов.

Альфа канал

Чёрно-белые и полноцветные изображения глубиной от 8 до 16 битов также могут содержать не сопоставленные данные альфа канала, называемые альфа маской. Если используются данные альфа маски, каждый чёрно-белый или полноцветный пиксель содержит дополнительно значение альфа канала для данного пикселя. Изображения с индексированными цветами могут содержать альфа канал в блоке прозрачности.

Альфа значение определяет уровень прозрачности пикселя. Минимальное значение битовой глубины (всегда 0) указывает на абсолютную прозрачность, а максимальное значение либо отсутствие как таковое альфа маски указывает на полную непрозрачность.

Чересстрочность

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

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

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

Типичная чересстрочная схема, также используемая в формате GIF, просто реорганизует порядок хранения строк развёртки. Например, строки файла будут хранится не в последовательном порядке (0, 1, 2, 3, 4, 5, 6,...), а в чересстрочном (0, 8, 4, 9, 2, 10, 5,...). Формат GIF использует такую же чересстрочную схему, и данные сохраняются (или передаются) в 4 этапа: 1/8, 1/8, 1/4 и 1/2.

В PNG несколько иной подход: создание чересстрочного изображения в 7 этапов по схеме Adam7 (в честь создателя Адама М. Костелло). Первые 6 этапов в этой схеме предназначены для интерпретации всех чётных строк (0, 2, 4, 6,...), а последний 7-й для заполнения оставшихся нечётных сток (1, 3, 5, 7...).

Вместо того, чтобы содержать пиксели для всей строки, исходные 6 этапов содержат лишь некоторые определённые пиксели через строку. В первых 2 этапах содержится 1/64-я всех пикселей изображения, в 3-ем - 1/32-я, в 4-ом - 1/16-я, в 5-м - 1/8, в 6-м - 1/4, а в заключительном 7-м этапе - 1/2 данных изображения.

Изображение на экране постепенно создаётся сначала из квадратов 8x8, затем из прямоугольников 4x8, затем из квадратов 4x4, затем из прямоугольников 2x4, затем из квадратов 2x2 и затем из прямоугольников 1x2. В заключительном этапе заполняются все пиксели нечётных строк.

Чересстрочность Adam7 позволяет намного быстрее прогрессивно отображать пиксели на экране, чем если бы отображались полностью сроки развертки. Пиксели в изображении также расположены в более удобной для человеческого глаза схеме, позволяя разглядеть изображение после загрузки 20% - 30% данных этого изображения, в сравнении с 50% или более данных, необходимых для данных GIF.

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

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

Чересстрочность Adam7 осуществляется по фильтровальной схеме, приведённой ниже. Несжатые данные PNG преобразуются в чересстрочные данные сперва путём наложения шаблона 8x8 на всё изображение. Затем данные 7 раз сканируются, и значения пикселей под шаблоном определяют значения пикселей, сохраняемых или передаваемых по сети во время каждого этапа.

1

6

4

6

2

6

4

6

7

7

7

7

7

7

7

7

5

6

5

6

5

6

5

6

7

7

7

7

7

7

7

7

3

6

4

6

3

6

4

6

7

7

7

7

7

7

7

7

5

6

5

6

5

6

5

6

7

7

7

7

7

7

7

7

Сжатие данных

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

Метод Deflate - разновидность алгоритма сжатия LZ77, запатентованного (4,464,650) Лемпелом, Зивом, Кохеном и Истманом в 1981 году. Метод Deflate использует передвигающееся по данным окно переменного размера и случайным образом сортированные таблицы для распознавания структуры данных и сжатия их кодировкой Хаффмана. В PNG используется разновидность Deflate без случайных таблиц, и поэтому на него не влияют условия правовых притязаний и лицензионных соглашений.

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

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

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

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

Фильтр "Сверху" сохраняет разность между байтом текущего пикселя и соответствующим байтом соответствующего пикселя в предыдущей строке развёртки. "Средний" фильтр сохраняет разницу между текущим пикселем и средним арифметически значений пикселей над и слева от текущего пикселя.

Фильтр "Траектории" использует линейную функцию для подсчёта значения. Ближайший совпадающий байт слева, верху или сверху слева используется в качестве прогнозирующего значения.

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

Текущая спецификация PNG находится на следующей Web странице:

http://sunsite.unc.edu/boutell/png.html

и следующих FTP сайтах:

ftp://swrinde.nde.swri.edu/pub/png/documents/
ftp://ftp.uu.net:/graphics/png/documents/

Наилучший источник информации о PNG и ресурсы находятся на сайте PNG группы Грега Роулофа:

http://quest.jpl.nasa.gov/PNG/

Вопросы о PNG можно задать службе рассылки новостей comp.graphics.misc, по адресу:

[email protected]

либо главному автору спецификации PNG Томасу Боутеллу:

E-mail: [email protected]

Разработчики PNG могут подписаться на PNG рассылку. Пошлите e-mail по адресу [email protected]

Про PNG. Часть первая

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

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

Начнем с терминологии. Предполагаю, что большинство читателей пользуются фотошопом и встречали там названия PNG-8 и PNG-24. Это не два разных формата, а всего лишь вариации одного и того же PNG. Формат позволяет хранить три типа изображений: greyscale (для описания изображения используется один канал — белый), indexed-colour (используется палитра цветов, как в GIF) и truecolor (используется три канала — RGB).

Самое главное преимущество формата PNG — это, конечно же, новые алгоритмы сжатия. Все помнят, что GIF эффективно сжимает только горизонтальные одноцветные области? Про это ограничение теперь можно забыть:

GIF, 2568 байт PNG-24, 372 байта

Вторым важным преимуществом является фильтрация строк (scanline filtering, или delta filters), благодаря которой PNG-упаковщик может получить гораздо более удобные данные для сжатия.

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

Хозяйке на заметку

Считаю своим долгом отметить, что цвет в формате RGB хранится в виде одного числа, а не трех (на каждый канал). Например, цвет R: 253, G: 93, B: 69 хранится как число 16604485 в десятичной системе счисления или как #fd5d45 — в шестнадцатеричной.


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

Перед каждой строкой появилась цифра 2. Это — фильтр, который был применен к строке. В данном случае это фильтр Up, который говорит декодеру: «Для текущего пикселя возьми значение пикселя выше и прибавь к нему текущее значение». В нашем случае это 0, потому что цвета текущего и верхнего пикселей не отличаются. А эти данные можно эффективней упаковать, если у нас достаточно большое изображение.

Почему я написал может? Потому что в нашем идеализированном случае более эффективной была бы такая схема:

Тут применен фильтр 1 под названием Sub, который говорит декодеру: «Возьми значение пикселя левее текущего и прибавь ему текущее значение». В данном случае 1.

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

Хозяйке на заметку

Всего существует 5 фильтров: None (никакой фильтрации), Sub (от текущего значения отнять значение левого пикселя), Up (отнять верхний пиксель), Average (отнять среднее значение левого и верхнего пикселей) и Paeth (подставить значение верхнего, левого или верхнего левого пикселя, назван в честь Алана Паэта).


Проверим работу фильтров:

PNG-24, фильтр None
56084 байта
PNG-24, фильтр Up
23585 байт

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

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

PNG-24 (фотошоп → truecolor),
8167 байт
PNG-24 (фотошоп + OptiPNG → greyscale),
6132 байта

Преимущества greyscale над truecolor очевидны: к примеру, белый цвет в первом случае записывается (в десятичной системе счисления) числом 255, а во втором — 16777215.

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

Описание расширения PNG. Как открыть файл с расширением PNG?

Расширение PNG

Чем открыть файл PNG

В Windows: Microsoft Windows Photo Viewer, Microsoft Paint, Adobe Photoshop CS5, Adobe Photoshop Elements 10, Adobe Illustrator CS5, CorelDRAW Graphics Suite X5, Corel PaintShop Pro X4, ACDSee Photo Manager 14, ACD Systems Canvas 12, Roxio Creator 2012, Microsoft Expression Design, Adobe Fireworks, PhotoOnWeb, Nero Multimedia Suite, Adobe Creative Suite, IrfanView, Corel Presentations, FastStone Image Viewer, Artweaver, Ability Photopaint, Любая программа просмотра изображений, Любой вэб-браузер
В Mac OS: Apple Preview, Apple Safari, Adobe Photoshop CS5, Adobe Photoshop Elements 10, Adobe Illustrator CS5, Roxio Toast 11, Adobe Fireworks for Mac, Flare for Mac, Любая программа просмотра изображений, Любой вэб-браузер
В Linux: GIMP, Paint.NET, XnView

Описание PNG

Раздел: Растровая графика

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

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

.PNG изображения не могут быть анимированы, например, как изображения в формате .GIF. Тем не менее, похожий формат .MNG может быть анимированными. Формат .PNG не обеспечивает поддержку цвета CMYK, потому что он не предназначен для использования с профессиональной графикой. Первоначально только Netscape Navigator и Microsoft Internet Explorer поддерживали файл .PNG, но сегодня каждый веб-браузер может читать формат правильно.

MIME тип: image/png, image/x-png, application/png, application/x-png
HEX код: 89 50 4E 47 0D 0A 1A 0A 00 00 00 0D 49 48 44 52
ASCII код: PNG IHDR

Другие программы, связанные с расширением PNG

    Каталог браузера PaintShop Photo Pro от Corel Corporation
    Расширение файла .PNG связано с Corel Paint Shop Pro, программное обеспечение фото-редактирования для продвинутых пользователей, разработанная и продаваемая Corel Corporation. .PNG файлы содержат каталоги браузера. Относится к разделу Графика, изображения
    Файл изображения Adobe Fireworks от Adobe Systems Incorporated
    Расширение PNG связано с Adobe Fireworks. PNG Adobe Fireworks основаны на Portable Network Graphic (PNG) формате, но содержат дополнительные собственные метаданные, которые только приложения Adobe могут читать. Эта версия формата PNG открывается исключительно только в Adobe Fireworks. Относится к разделу Растровая графика
    Файл живого существа в игре Spore от Electronic Arts, Inc.
    Расширение файла PNG используется в игре Spore. Spore представляет собой многожанровую массовую онлайн игру, разработанную Maxis и с дизайном от Уилл Райт (Will Wright). Это позволяет игроку управлять эволюцией видов с момента ее зарождения в качестве одноклеточного организма, через развитие интеллектуального и социального существа, в межзвездное развитие как космической культуры. Данные необходимы для анимации существ и закодированы в растровых графических файлах PNG. По последней версии (октябрь 2008) данные могут быть закодированы в цветных слоях графического файла (по технологии кодирования, известная как стеганография). Относится к разделу Игры

Анализ структуры файла изображения PNG (5)

5.2.3 Анализ структуры файла изображения PNG (5)

Рисунок 5-24 показывает структуру данных блока данных палитры (PLTE) в pic1.png.

498)this.style.width=498;" border=0< 
(Нажмите, чтобы увеличить) Структура блока данных палитры рисунка 5-24 (PLTE) в файле изображения pic1.png
498)this.style.width=498;" border=0< 
(Нажмите, чтобы увеличить) Структура блока данных палитры рисунка 5-24 (PLTE) в файле изображения pic1.png

Таблица 5-21 показывает значение полей блока данных палитры (PLTE) в файле изображения pic1.png.

Таблица 5-21 Значения полей блока данных палитры (PLTE) в файле изображения pic1.png


Шестнадцатеричное значение

описание

00 00 03 00

Длина блока данных PLTE, 00 00 03 00 = 768

50 4C 54 45

Флаг типа блока данных, значение 50 4C 54 45 ASCII, равное PLTE

00 00 00

Палитра первый индекс

FF FF FF

Палитра 2-й указатель

EA FF FF

Палитра 3-й указатель

…………

Индекс палитры ...

E4 DC DC

Палитра 255 указатель

FF FF FF

Палитра 256-й указатель

7D 2C 3D AD

Значение CRC

Продолжить анализ следующих данных. Согласно предыдущему методу анализа, следующим блоком данных является блок данных с прозрачным изображением (tRNS). Для 256-цветных изображений блок данных с прозрачным изображением (tRNS) имеет в общей сложности 256 элементов, каждый из которых соответствует Элемент в блоке данных палитры, 00 означает прозрачный, а FF означает непрозрачный.

Структура прозрачного блока данных изображения (tRNS) может быть определена с помощью следующего кода:

PNG_CHUNK_HEADER chunkHdr;
BYTE trnsChunkData[chunkHdr.btChunkLen]
DWORD trnsCrc;
На рисунке 5-25 показана структура данных блока прозрачных данных изображения (tRNS) в pic1.png.
498)this.style.width=498;" border=0< 
(Нажмите, чтобы увеличить) Рисунок 5-25 Структура прозрачного блока данных изображения (tRNS) в файле изображения pic1.png

Таблица 5-22 показывает значение полей прозрачного блока данных изображения (tRNS) в файле изображения pic1.png.

Таблица 5-22 Значения полей в блоке прозрачных данных изображения (tRNS) в файле изображения pic1.png


Шестнадцатеричное значение

описание

00 00 01 00

длина блока данных tRNS, 00 00 01 00 = 256

74 52 4E 53

Флаг типа блока данных, значение ASCII 74 52 4E 53 равно tRNS

FF~00

Прозрачные изображения блоков данных, всего 256, каждый соответствующий тонирование
Один элемент на доске, 00 означает прозрачный, FF означает непрозрачный

53 F7 07 25

Значение CRC

Продолжайте анализировать следующие данные: в соответствии с предыдущим методом анализа анализируется, что следующим блоком данных является блок данных изображения (IDAT). Для 256-цветных изображений блок данных изображения (IDAT) хранит номер индекса, который указывает на цветовую палитру.Для изображений 16-битного или более цветов, блок данных изображения (IDAT) хранит фактический цвет пикселя, упорядоченный по 0xRRGGBB. Следует отметить, что данные в блоке данных изображения (IDAT) сжимаются по варианту LZ77.

Структура блока данных изображения (IDAT) может быть определена с помощью следующего кода:

PNG_CHUNK_HEADER chunkHdr;
BYTE idatChunkData[chunkHdr.btChunkLen];
DWORD idatCrc;

Png файлы для фотошопа. Как создать PNG с прозрачностью в Adobe Photoshop (версии CC и выше)

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

Чем открыть файл в формате PNG

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

Что находится в файлах PNG

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

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

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

Чтобы открыть PNG файлы, можно использовать любой интернет-браузер или графический редактор. И платформа ОС Windows, и Mac OS имеют встроенные механизмы для просмотра таких изображений. Программа Png - Просмотр фотографий Windows по умолчанию часто используется для открытия файлов PNG, поскольку это системная программа Windows. Но существует много других способов их просмотра.

Все браузеры (например, Chrome, Firefox, Internet Explorer и т. д.) будут автоматически просматривать файлы PNG, которые вы открываете в Интернете, а это означает, что не нужно загружать на компьютер каждый PNG файл, который вы хотите посмотреть. Вы также можете использовать браузер для открытия уже имеющихся на компьютере PNG файлов при помощи комбинации клавиш Ctrl + O. Большинство таких программ также поддерживают drag-and-drop, поэтому можно просто перетащить PNG файл в браузер, чтобы открыть его.

Конвертация PNG

Файлы изображений можно преобразовывать различными способами, например, конвертировать в png и из него с помощью различных программ и онлайн сервисов. Например, это позволяет делать редактор Png - Фотоконвертер .

Файл изображения, который хранится в формате Portable Network Graphic (PNG). Содержит битовую матрицы цветов и использует компрессию без потерь, близкую к файлу , но без ограничений в копировании. Обычно используется для хранения графики веб-изображений.

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

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

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

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


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

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

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

  • 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, для редактирования, на персональном компьютере которого существуют специальные программы редакторы, об одной из которых с возможностью скачивания мы вам далее и расскажем. Отметим, для тех, кто не знает, что данный формат пришёл на замену популярному ранее аналогу gif, оставшемуся востребованным, но уже в другом направлении работы дизайнеров. Интерес же к рекламируемому нами сейчас удобному и вместительному расширению изображений, проявлен многими дизайнерами и фотографами нашей страны, а также запада, где он ценится даже больше.

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

Скачать программу формат png на компьютер

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


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


Что ж, думаю из всего мной вышеперечисленного можно сделать пару логичных выводов и принять решение о загрузке к себе на компьютер или же ноутбук удобнейшей редакционной программы с массой достоинств и полностью отсутствующими недостатками. Ну а перейти непосредственно к самой загрузке дистрибутива вам поможет обращение своего пристального внимания на адресные зеркальные ссылки, расположенные чуть ниже и гарантирующие максимальную скорость. 05.06.16 27.2K

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

В этой статье мы расскажем, как сделать прозрачность в Фотошопе .

Создание файла

Первый шаг – это создание файла. Для этого откройте Adobe Photoshop и в меню «Файл » (File ) вверху страницы выберите «Создать » (New ).

Затем в появившемся окне «Новый документ » (New Document ) создайте файл нужного размера, и убедитесь, что разрешение документа составляет 72 пикселя на дюйм (поскольку файл предназначен для использования в веб ). А также, что вы выбрали значение «Прозрачный » (Transparent ) в выпадающем списке «Содержимое фона » (Background Contents ).

*Перед тем, как сделать PNG с прозрачностью в Фотошопе , нужно уточнить, что в этом примере мы создаем изображение для загрузки в качестве фона для сайта, поэтому размер документа задан следующим образом: ширина 3000 пикселей, высота 1730 пикселей, что является рекомендуемыми размерами для загрузки HD изображений:


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

Затем в панели «Слои » (Layers ) убедитесь, что работаете на прозрачном слое, а не на фоновом:


После того, как вы завершили создание и готовы сохранить прозрачное изображение, в зависимости от используемой версии Photoshop , в меню «Файл » (File ) вы можете использовать один из возможных вариантов:

Photoshop версии ранее, чем CC 2015:

Сейчас мы расскажем, как сделать прозрачность картинки в Фотошопе , который вышел раньше CC 2015 . В этих версиях используют метод «Сохранить для Web » (Save for Web & Devices ), чтобы сохранить и оптимизировать PNG изображения для использования в вебе. Чтобы воспользоваться этим методом, просто зайдите в меню «Файл » (File ), и далее – «Сохранить для Web » (Save for Web & Devices ):


Затем в появившемся окне выберите PNG-24 из выпадающего меню возможных значений, а потом убедитесь, чтобы выбраны опции «Прозрачность » (Transparency ) и «Преобразовать в sRGB » (Convert to sRGB ). Это подтверждает, что изображение будет содержать прозрачный фон и его цветовой режим будет преобразован в sRGB , рекомендованное цветовое пространство для веб.
Поля «Размер изображения » (Image Size ) автоматически заполняются значениями, которые вы задали, когда создавали файл. Но если вы хотите изменить размер файла перед сохранением, то можно сделать это сейчас.

Photoshop версии CC 2015:

Перед тем, как сделать прозрачность фото в Фотошопе , нужно знать, что с версии CC 2015 опция «Сохранить для Web » (Save for Web & Devices ) в меню «Файл » (File ) помечена как Legacy (устаревшая ). И замещена на новую опцию «Экспорт » (Export ), которая предлагает идентичную функциональность с более быстрым сохранением в файле меньшего размера и в лучшем качестве. Чтобы воспользоваться опцией «Экспорт », нажмите меню «Файл » (File ), а затем — «Экспортировать как » (Export As ).

Примечание: Adobe по-прежнему предлагает опцию «Сохранить для Web » (Save for Web & Devices ) в Photoshop CC 2015 , и она доступна через меню Файл > Экспорт (File > Export ) или при использовании комбинации клавиш Command+Option+Shift+S (для Mac ) или Ctrl+Alt+Shift+S (для ПК ):


Затем в появившемся окне выберите PNG из выпадающего меню «Формат » (Format ) и убедитесь, что выбраны опции «Прозрачность » (Transparency ) и «Преобразовать в sRGB » (Convert to sRGB ).

Поля «Размер изображения » (Image Size ) и «Размер холста » (Canvas Size ) должны автоматически заполниться значениями, которые вы задали, когда создавали файл. Но при желании можно изменить эти параметры перед тем, как сделать эффект прозрачности в Фотошопе .

2 голоса

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

Это самая популярная функция в программе Photoshop, а потому я решил максимально подробно рассказать вам не только о самом процессе, но и том, как сохранить картинку в фотошопе без фона.

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

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

Более терпеливых я благодарю за понимание. Приступим.

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

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

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

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

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

Почему так? Эта шашечка – общепринятый признак, если вы его видите, то значит в этой части иллюстрации цвета нет совсем, и при наложении вы увидите нижнюю часть рисунка. Точно также прозрачность отображается и . Если вам нужно убрать фон из фотографии, то необходимо добиться того, чтобы вместо цвета, вы смогли узреть вот этот заветный узор. Шашку.

Как правильно хранить прозрачные картинки

Все мы привыкли к такому формату фотографий, как jpeg. Некоторые люди даже и не знают о существовании других. Однако, он не понимает, что такое прозрачность. Для того, чтобы скачивать и хранить на своем компьютере «правильные» фотографии, вам понадобится понять и запомнить новый формат — png.

Видите, помимо шашки, в Google почти всегда вместе с нужными картинками можно увидеть это сочетание букв.

Затем выбираете нужный тип файла, png и готово. Он есть в любой версии. Если не видите – ищите внимательнее. Без него никак. Уверяю вас.

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

Как избавиться от фона: простой и довольно быстрый способ без лишних заморочек

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

Итак, открываем картинку.

Находим инструмент «Фоновый ластик». Если не можете его отыскать, то подержите несколько секунд мышку с зажатой левой кнопкой на клавише обычного ластика. Нужный инструмент откроется. Вы сможете его добавить, щелкнув по нему.

Можете увеличить диаметр ластика, чтобы стирать было удобнее.

Теперь повозюкайте по ненужным элементам на картинке. Вы увидите, как шашка начинает проявляться, а цвет исчезать!

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

Данный метод стирания не назовешь самым лучшим и невероятно удобным. Поэтому я рекомендую вам все-таки обратить внимание на предыдущую мою статью, полностью посвященную этой теме.

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

Думаете, что у вас не получится или вы слишком стары для этого дерьма? Не хватает времени? Поверьте, это все нелепые отговорки. Я юрист и зарабатываю достаточно, но … у вас есть хобби, любимое увлечение? Вы живете полной жизнью? Вам действительно не скучно?

Что бы вы ни знали и чем бы ни интересовались. Интернет открывает массу новых возможностей. Впустите в свою жизнь изменения. Если деньги вас не интересуют – это еще лучше. Это дает больше шансов вашему проекту стать дорогим, крутым и успешным. Все известные люди не работают ради прибыли, они трудятся, потому что любят то, чем они занимаются. Редко кто из них называет это «работой».

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

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

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

Занимайтесь чем-то новым. Если вы любите фотошоп – обратите внимание на курс Зинаиды Лукьяновой — «Фотошоп с нуля » и овладейте им в совершенстве. Очень быстро у вас появится прибыльное хобби. Не так уж увлечены дизайном? Обратите внимание на то, и создавайте свои проекты.


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

Возможно, одна из них вас вдохновит на что-то новое и пока неизвестное. Вы поймете, что это интересно и захотите попробовать сами, а потом… кто знает что будет потом?

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

Я искренне желаю вам успехов в ваших начинаниях и надеюсь, что эта наша встреча будет не последней.

Форматы изображений: какой из них выбрать?

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

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

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

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

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

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

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

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

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


Многие недолюбливают JPEG, но стоит отметить, что он просто не совсем подходит для печати. В JPG-формате используется сильное сжатие. Это хорошо, если требуется максимально уменьшить размеры файла, но это не совсем подходит с точки зрения качества картинки, которую вы собираетесь распечатывать. Поэтому этот формат нельзя использовать при создании, скажем, логотипов.

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

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


Кажется, никто и никогда так и не произнес название этого формата правильно. Дизайнеры часто четко произносят первую букву G или диктуют все три буквы по очереди, однако его создатель, Стив Уилхайт, утверждает, что правильно произносить название как «джив». Хотя его аббревиатура расшифровывается как Graphics Interchange Format («формат для обмена изображениями»), а сам он главным образом используется в веб-дизайне.

Преимущество GIF (которое также отличает его от остальных веб-форматов для изображений) в том, что эти картинки можно анимировать.

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


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

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


TIFF (иногда TIF) – формат файла без сжатия, а это значит, что при сохранении он вообще не подвергается компрессии. TIFF также поддерживает послойную структуру.

Этот формат зачастую называют «готовым к печати» хотя большинство принтеров лучше работают с родными типами файлов вроде AI и PSD.

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


PSD представляет собой родной формат программы Adobe Photoshop. Это значит, что беспрепятственно редактировать эти файлы можно только в Photoshop.

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


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

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

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


AI – еще один брендовый векторный формат от Adobe, предназначенный для работы в программе Illustrator. AI-файл нельзя встраивать в веб-страницы, и это не тот формат, который используется для отправки проектов клиенту. Но он хорошо подходит для внутреннего использования и для печати.
PDF-формат от Adobe идеально подходит как для печатной продукции, так и для цифрового использования. Это формат, с которым «справится» любой клиент, и который без проблем можно распечатать на принтере. В PDF-документ можно поместить как растровые, так и векторные изображения, или даже комбинировать их в едином документе.

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

Однако PDF больше подходит для печатных продуктов вроде книг, брошюр или листовок.


В процессе работы над дизайном печатной продукции, вам, возможно, придется прыгать от одного формата к другому. Иногда нужно поместить JPG-фотографии и EPS-логотип в общий проект, работа над которым ведется в PSD-файле в Photoshop.

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

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

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

Конвертирование растрового изображения в векторное – это целая наука. Нет простого способа конвертировать пиксели растрового изображения в формулы, генерирующие векторы. Самый проверенный способ – это просто перерисовать картинку при помощи векторов.

Формат файла PNG - файл растрового изображения

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

PNG , переносимая сетевая графика, относится к типу формата файлов растровых изображений, в котором используется сжатие без потерь. Этот формат файла был создан как замена Graphics Interchange Format (GIF) и не имеет ограничений авторского права. Однако формат файла PNG не поддерживает анимацию. Формат файлов PNG поддерживает сжатие изображений без потерь, что делает его популярным среди пользователей. Со временем PNG превратился в один из наиболее часто используемых форматов файлов изображений.

Краткая история

Основной причиной создания формата файла PNG был запатентованный алгоритм сжатия Lempel-Ziv-Welch, используемый в формате файла GIF. Это, наряду с другими ограничениями GIF, привело к необходимости замены файлового формата на GIF . Первое предложение и название для формата файла PNG появилось в январе 1995 года. Ключевые события, касающиеся форматов файлов PNG, перечислены ниже:

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

Функциональное сравнение GIF и PNG

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

| #Feature | #GIF | #PNG | Индексные изображения до 256 цветов | Да | Да | Поддержка потоковой передачи | Да | Да | Прозрачность | Да | Да | Дополнительная информация | Да | Да | Независимость от оборудования и платформы | Да | Да | Эффективно | Да | Да | Truecolor изображения до 48 бит на пиксель | Нет | Да | Полутоновые изображения до 16 бит на пиксель | Нет | Да | Полный альфа-канал (общие маски прозрачности) | Нет | Да | Информация о гамме изображения | Нет | Да | Надежность | Нет | Да | Более быстрое начальное представление | Нет | ((( да )))

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

Почти все операционные системы поддерживают открытие файлов PNG.Например, программа просмотра Microsoft Windows имеет возможность открывать файлы PNG, поскольку ОС по умолчанию поддерживает поддержку, доступную как часть установки. Файл PNG состоит из сигнатуры PNG , за которой следует // чанков //.

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

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

{{{137 80 78 71 13 10 26 10 }}}

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

Блоки

Каждый блок состоит из четырех частей:

Длина: 4-байтовое целое число без знака, дающее количество байтов в поле данных блока. Длина учитывает только поле данных, но не само, код типа блока или CRC. Ноль - допустимая длина. Хотя кодеры и декодеры должны рассматривать длину как беззнаковую, ее значение не должно превышать 231 байт.

Тип блока: 4-байтовый код типа блока. Для удобства описания и изучения файлов PNG, коды типов могут состоять только из прописных и строчных букв ASCII (A-Z и a-z, или 65-90 и 97-122 в десятичном формате).Однако кодеры и декодеры должны обрабатывать коды как фиксированные двоичные значения, а не строки символов. Например, было бы неправильно представлять код типа IDAT эквивалентами этих букв в формате EBCDIC. Дополнительные соглашения об именах для типов блоков обсуждаются в следующем разделе.

Данные блока: Байты данных, соответствующие типу блока, если таковые имеются. Это поле может быть нулевой длины.

CRC: 4-байтовый CRC (Cyclic Redundancy Check), вычисленный для предыдущих байтов в блоке, включая код типа блока и поля данных блока, но не включая поле длины.CRC присутствует всегда, даже для фрагментов, не содержащих данных.

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

Чанки могут появляться в любом порядке с учетом ограничений, установленных для каждого типа чанков. (Одно заметное ограничение состоит в том, что IHDR должен появляться первым, а IEND - последним; таким образом, блок IEND служит маркером конца файла.) Могут отображаться несколько блоков одного типа, но только если это специально разрешено для этого типа.

Типы фрагментов

Типы фрагментов подразделяются на критических и вспомогательных фрагментов на основе 4-байтового чувствительного к регистру значения ASCII, присвоенного типу фрагмента. Все реализации должны понимать и успешно отображать стандартные критические блоки. Допустимое изображение PNG должно содержать блок IHDR, один или несколько блоков IDAT и блок IEND.

Сжатие

Метод сжатия PNG 0 (единственный метод сжатия, определенный в настоящее время для PNG) задает сжатие с расширением / расширением со скользящим окном размером не более 32768 байт.Сжатие Deflate - это производная LZ77, используемая в zip, gzip, pkzip и связанных с ними программах. Были проведены обширные исследования, подтверждающие его беспатентный статус. Сжатые данные в потоке данных zlib хранятся в виде серии блоков, каждый из которых может представлять необработанные (несжатые) данные, сжатые данные LZ77, закодированные с помощью фиксированных кодов Хаффмана, или сжатые данные LZ77, закодированные с помощью пользовательских кодов Хаффмана. Бит маркера в последнем блоке идентифицирует его как последний блок, позволяя декодеру распознать конец сжатого потока данных.

Фильтрация предварительного сжатия

Фильтры предварительного сжатия применяются для подготовки данных изображения к оптимальному сжатию. Метод фильтра PNG определяет пять основных типов фильтров:

| # Тип фильтра | # Имя | # Прогнозируемое значение | 0 | Нет | Строка сканирования передается без изменений | 1 | Sub | Передает разницу между каждым байтом и значением соответствующего байта предыдущего пикселя. | 2 | Вверх | Фильтр Up () аналогичен фильтру Sub (), за исключением того, что в качестве предиктора используется пиксель непосредственно над текущим пикселем, а не только слева от него.| 3 | Среднее | Фильтр Среднее значение () использует среднее значение двух соседних пикселей (слева и сверху) для прогнозирования значения пикселя. | 4 | Paeth | Фильтр Paeth () вычисляет простую линейную функцию трех соседних пикселей (левый, верхний, верхний левый), а затем выбирает в качестве предиктора соседний пиксель, ближайший к вычисленному значению.

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

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

Ссылки

Сводка из Энциклопедии форматов графических файлов

Также известен как: Portable Network Graphic Format


Тип Растровое изображение
Цвета от 1 бит до 48 бит
Сжатие LZ77 вариант
Максимальный размер изображения 2Gx2G пикселей
Несколько изображений в файле
Числовой формат С прямым порядком байтов
Оригинатор Томас Бутелл, Том Лейн и многие другие
Платформа любой
Вспомогательные приложения Множество условно-бесплатных и коммерческих пакетов
См. Также GIF

Использование
PNG может без потерь сохранять двухуровневую 48-битные данные изображения truecolor.Он разработан специально для передача и хранение данных сетевого изображения.

Комментарии
PNG - это хорошо продуманный и хорошо проработанный файл. формат, предназначенный для замены GIF-файла CompuServe формат.

Спецификации поставщика доступны для этого формата.

Образцы изображений доступны для этого формата.

Фрагменты кода доступны для этого формата.


PNG (произносится как «пинг») - это формат файла растрового изображения, используемый для передачи и хранить растровые изображения. PNG поддерживает возможность хранения до 16 бит (шкала серого) или 48 бит (истинный цвет) на пиксель и до 16 бит альфа-данных. Он обрабатывает прогрессивный дисплей данных изображения и хранение гаммы, прозрачность и текстовая информация, и он использует эффективные и форма сжатия данных без потерь.

Содержание:
Организация файлов
Подробная информация о файле
Дополнительная информация

PNG - это совершенно новый формат, созданный с намерением предложить сообществам разработчиков графики и изображений альтернативу Формат обмена графикой CompuServe (GIF) и юридические аспекты, связанные с аспектами "оплаты до реализации" этого формат.(См. Раздел «Правовые вопросы LZW» в главе 9, Сжатие данных .) неофициальное рекурсивное происхождение имени "PNG" не является "PNG". GIF ".

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

PNG и GIF89a имеют следующие общие особенности:

  • Формат, организованный как поток данных
  • Сжатие данных изображения без потерь
  • Хранение изображений с индексным отображением, содержащих до 256 цвета
  • Прогрессивное отображение чересстрочного изображения данные
  • Поддерживается прозрачный ключевой цвет
  • Возможность хранить общедоступные и частные, определяемые пользователем данные
  • Независимо от оборудования и эксплуатации система

В PNG были улучшены следующие функции GIF:

  • Юридически необремененный метод данных сжатие
  • Более быстрое чередование экранов с прогрессивной разверткой схема
  • Большая расширяемость для хранения определяемых пользователем данные

Следующие функции PNG отсутствуют в GIF:

  • Хранение полноцветных изображений до 48 бит на пиксель
  • Хранение полутоновых изображений до 16 бит на пиксель
  • Полный альфа-канал
  • Гамма-индикатор
  • CRC метод повреждения потока данных обнаружение
  • Стандартный набор инструментов для реализации программ чтения PNG и писатели
  • Стандартный набор эталонных изображений для тестирования PNG читатели

Следующие функции GIF отсутствуют в PNG v1.0:

  • Возможность хранения нескольких изображений
  • Поддержка хранения анимационных последовательностей
  • Оплата лицензионного сбора, необходимого для продажи программного обеспечения, которое читает или записывает формат файла GIF

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

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

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

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

В нескольких других форматах файлов также используется концепция блоков или кусков. данных.Наиболее заметными среди этих форматов являются GIF, IFF и RIFF. Данные в этих форматах читаются последовательно от начала до конца. файла. Такая конструкция избавляет от необходимости искать разные детали. файла с использованием значений смещения; он также делает эти типы форматы, идеально подходящие для использования в сети и передачи данных протоколы. Хотя каждый из этих форматов обычно рассматривается как формат файла, правильнее думать о них как о потоке данных который фиксируется и сохраняется в файл.

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

Фрагмент заголовка (IHDR)

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

Чанк палитры (PLTE)

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

Блок данных изображения (IDAT)

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

Фрагмент трейлера изображения (IEND)

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

Из этих фрагментов IHDR, IDAT и IEND должны присутствовать в каждом PNG. поток данных.

Рассмотрим следующие два основных типа файлов PNG: один с палитрой цветов и без:

Подпись

Часть IHDR

IDAT Chunk

IEND Chunk

Подпись

Часть IHDR

PLTE Chunk

IDAT Chunk

IEND Chunk

Как видите, разница только в этих двух основных Форматы PNG - это наличие чанка палитры.

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

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

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

Таблица PNG-1: фрагменты PNG

Тип блока

Несколько

Дополнительно

Должность

IHDR

Первый кусок

cHRM

Есть

До PLTE и IDAT

gAMA

Есть

До PLTE и IDAT

сбИТ

Есть

До PLTE и IDAT

PLTE

Есть

Перед IDAT

бКГД

Есть

После PLTE и до IDAT

hIST

Есть

После PLTE и до IDAT

тРНС

Есть

После PLTE и до IDAT

ОФФ

Есть

Перед IDAT

pHYs

Есть

Перед IDAT

sCAL

Есть

Перед IDAT

IDAT

Есть

Смежно с другими IDAT

ВРЕМЯ

Есть

Любая

ТЕКСТ

Есть

Есть

Любая

zTXt

Есть

Есть

Любая

fRAc

Есть

Есть

Любая

gIFg

Есть

Есть

Любая

ПОДАРОК ​​

Есть

Есть

Любая

gIFx

Есть

Есть

Любая

IEND

Последний кусок

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

 typedef struct _PngSignature
{
    БАЙТОВАЯ ПОДПИСЬ [8]; / * Идентификатор (всегда 89504E470D0A1A0Ah) * /
} PNGSIGNATURE;
 

Подпись имеет длину восемь байт и содержит значения 89h 50h 4Eh 47h 0Dh 0Ah 1Ah 0Ah ("\ x89PNG \ r \ n \ x1A \ n"). Это, казалось бы, случайное последовательность значений имеет несколько практических применений. Первый байт значение 89h - это 8-битное значение, используемое для идентификации файла как содержащего двоичные данные. Если бы 8-й бит был удален из файла (любезно предоставлено 7-битный канал данных), тогда это значение будет изменено на 09h и укажет, как файл был поврежден.

Следующие байты делают следующее:

  • Позволяет визуально идентифицировать поток данных ("PNG")
  • Обеспечивает обнаружение передачи файла, изменяющего последовательности новой строки ("\ r \ n" превратится в "\ r", "\ n" или "\ n \ r")
  • Останавливает листинг потока данных PNG в MS-DOS операционная система (Control-Z [""])
  • Обнаруживает проблемы перевода CR / LF при передаче файлов (последний перевод строки)

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

 typedef struct _PngChunk
{
    DWORD DataLength; / * Размер поля данных в байтах * /
    Тип DWORD; / * Код, определяющий тип чанка * /
    BYTE Data []; / * Фактические данные, хранящиеся в чанке * /
    DWORD Crc; / * Значение CRC-32 полей Тип и Данные * /
} PNGCHUNK;
 

DataLength - это количество байтов, хранящихся в поле данных.31) -1.

Тип - это 4-байтовый код, определяющий тип данных, хранящихся в кусок. Каждый байт этого поля может содержать прописные или строчные буквы. Буквенное значение ASCII (A-Z, a-z). Для Например, тип блока IHDR будет идентифицирован значением 69484452h в поле Тип. Читатели PNG должны рассматривать коды типов как 32-битные литеральные значения, а не как символы струны. Тот факт, что коды типов читаемы ASCII - это в первую очередь удобство для людей.31) -1) +12 байт. Чанки всегда выравниваются по границам байтов и поэтому никогда не требуются любые выравнивающие отступы.

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

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

Заголовок

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

 typedef struct _IHDRChunk
{
    DWORD Ширина; / * Ширина изображения в пикселях * /
    DWORD Высота; / * Высота изображения в пикселях * /
    BYTE BitDepth; / * Бит на пиксель или на выборку * /
    BYTE ColorType; / * Индикатор расшифровки цвета * /
    Байтовое сжатие; / * Индикатор типа сжатия * /
    БАЙТОВЫЙ фильтр; / * Индикатор типа фильтра * /
    BYTE Interlace; / * Тип используемой схемы чересстрочной развертки * /
} IHDRCHUNK;
 

Ширина и Высота - это ширина и высота растрового изображения в пикселях.31) -1.

BitDepth - это количество бит на пиксель для индексированных цветных изображений, а количество бит на выборку для полутоновых и полноцветных изображений. Индексированные цветные изображения могут иметь значение BitDepth, равное 1, 2, 4 или 8. Оттенки серого. изображения могут иметь значения BitDepth 1, 2, 4, 8 и 16. Только BitDepth значения 8 и 16 поддерживаются для истинного цвета, истинного цвета с альфа-каналом данные и шкала серого с изображениями альфа-данных.

ColorType указывает, как следует интерпретировать данные изображения.Допустимые значения равны 0 (шкала серого), 2 (истинный цвет), 3 (индексированный цвет), 4 (шкала серого) с альфа-данными) и 6 (истинный цвет с альфа-данными).

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

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

Чересстрочная развертка указывает алгоритм чересстрочной развертки, используемый для хранения изображения. data - или, точнее, порядок передачи данных пикселей.Значения, определенные для этого поля: 0 (без чересстрочной развертки) и 1 (Adam7 переплетение).

Палитра

Блок палитры (PLTE) всегда находится в потоках данных PNG, которые содержат данные изображения с индексированным цветом; это отображается, когда в поле Цвет блок заголовка содержит значение 3. Потоки данных Truecolor PNG (Color значения 2 и 6) также могут содержать фрагмент палитры, не имеющий истинного цвета. программы отображения могут использовать в качестве палитры для квантования данных изображения.В потоке данных PNG никогда не может быть более одного блока палитры.

Фрагмент палитры может иметь длину от 3 до 768 байт и иметь следующий формат:

 typedef struct _PLTEChunkEntry
{
    BYTE Red; / * Красный компонент (0 = черный, 255 = максимум) * /
    БАЙТ зеленый; / * Зеленая составляющая (0 = черный, 255 = максимум) * /
    BYTE Blue; / * Синий компонент (0 = черный, 255 = максимум) * /
} PLTECHUNKENTRY;
PLTECHUNKENTRY PLTEChunk [];
 

PLTEChunk - это массив, содержащий от 1 до 256 элементов PLTECHUNKENTRY.Каждый PLTECHUNKENTRY содержит три поля: Красное, Зеленое и Синее, которые сохранить значения красного, зеленого и синего цветов для этой записи палитры соответственно.

Блок данных изображения

Блок данных изображения (IDAT) хранит фактические данные изображения. Изображение данные всегда сжимаются, как того требует спецификация PNG. В данные изображения могут храниться в нескольких непрерывных блоках IDAT, чтобы Писателю PNG проще буферизовать сжатые данные изображения.31) -1 байт в длину.

Фрагмент трейлера изображения

Последним фрагментом потока данных PNG является трейлер изображения (IEND). кусок. Этот блок не содержит никаких связанных данных.

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

PNG v1.0 определяет 10 вспомогательных фрагментов, которые могут появляются в потоке данных PNG. Некоторые из этих блоки обеспечивают поддержку для хранения информации, которая может потребоваться для правильной интерпретации данных изображения (например, Image Gamma кусок).Краткое описание формата поля данных каждого из эти фрагменты приведены ниже. Обратитесь к PNG спецификация на CD-ROM для более подробной информации информация об этих чанках.

Фоновый цвет фрагмента

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

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

 typedef struct _bKGDChunkEntry
{
    БАЙТОВЫЙ индекс; / * Индекс цвета фона в палитре * /
} БКГДЧУНКЕНТРЫ;
 

Для данных в градациях серого, с данными альфа-канала или без них (значения ColorType 0 и 4) этот блок хранит 2-байтовое значение, определяющее уровень серого для использоваться в качестве фонового значения:

 typedef struct _bKGDChunkEntry
{
    WORD Value; / * Значение уровня фона * /
} БКГДЧУНКЕНТРЫ;
 

Для полноцветных изображений с данными альфа-канала или без них (значения ColorType 2 и 6), фоновый блок хранит три 2-байтовых значения, определяющих цвет RGB, используемый для фона:

 typedef struct _bKGDChunkEntry
{
    СЛОВО Красный; / * Значение образца красного фона * /
    СЛОВО Зеленый; / * Пример значения зеленого фона * /
    СЛОВО Синий; / * Пример значения синего фона * /
} БКГДЧУНКЕНТРЫ;
 
Фрагмент первичной цветности и точки белого

В блоке "Первичная цветность" и "Точка белого" хранится информация о Значения RGB на основе CIE 1931 г. Цветовое пространство XYZ.Только цветности x и y указаны, и они представлены значениями, умноженными на 100000.

 typedef struct _cHRMChunkEntry
{
    DWORD WhitePointX; / * Значение x точки белого * /
    DWORD WhitePointY; / * Значение y точки белого * /
    DWORD RedX; / * Красное значение x * /
    DWORD RedY; / * Красное значение y * /
    DWORD GreenX; / * Зеленое значение x * /
    DWORD GreenY; / * Зеленое значение y * /
    DWORD BlueX; / * Значение синего x * /
    DWORD BlueY; / * Синее значение y * /
} CHRMCHUNKENTRY;
 
Гамма-фрагмент изображения

Блок Image Gamma хранит исходное значение гаммы изображения. относительно исходной сцены.Сохраненное значение - это гамма умножить на 100000. Обратите внимание, что это "настоятельно" рекомендуется Авторы PNG, которые в декодерах реализуют гамму кусок.

 typedef struct _gAMAChunkEntry
{
    DWORD Gamma; / * Значение гаммы * /
} ГАМАЧУНКЕНТРИ;
 
Фрагмент гистограммы изображения

Блок Image Histogram хранит данные о приблизительном использовании частота каждого цвета в палитре. Этот чанк содержит массив 2-байтовые элементы, по одному элементу на запись в цветовой палитре.

 typedef struct _hISTChunkEntry
{
    WORD Гистограмма []; / * Данные гистограммы * /
} HISTCHUNKENTRY;
 
Фрагмент физического размера пикселя

Блок Physical Pixel Dimension указывает предполагаемое разрешение для отображения изображения.

 typedef struct _pHYsChunkEntry
{
   DWORD PixelsPerUnitX; / * Пикселей на единицу, ось X * /
   DWORD PixelsPerUnitY; / * Пикселей на единицу, ось Y * /
   BYTE UnitSpecifier; / * 0 = неизвестно, 1 = метр * /
} PHYSCHUNKENTRY;
 
Фрагмент значащих битов

Блок Significant Bits указывает битовую глубину оригинала. данные изображения.Если писателю PNG нужно сохранить изображение данные с неподдерживаемой битовой глубиной, данные должны быть дополнены до следующего большая поддерживаемая битовая глубина для сохранения. Например, для хранения Данные RGB с разрешением пять бит на выборку (RGB555) с использованием PNG, изображение данные сначала необходимо масштабировать до 8-битной глубины выборки (RGB888). Тогда блок "Значимые биты" хранить битовую глубину исходных компонентов данных изображения.

В этом блоке есть четыре возможных формата данных; тот самый используется зависит от формат данных изображения (как указано в поле ColorType в блок IHDR):

 / * Данные изображения в оттенках серого (ColorType 0) * /
typedef struct _sBITChunkEntry
{
    BYTE GrayscaleBits; / * Значимые биты шкалы серого (ColorType 0) * /
} SBITCHUNKENTRY;
 
 / * Данные изображения Truecolor или индексированного цвета (ColorType 2 или 3) * /
typedef struct _sBITChunkEntry
{
    BYTE RedBits; / * Красные значащие биты * /
    BYTE GreenBits; / * Зеленые значащие биты * /
    BYTE BlueBits; / * Синие значащие биты * /
} SBITCHUNKENTRY;
 
 / * Данные изображения в оттенках серого с альфа-каналом (ColorType 4) * /
typedef struct _sBITChunkEntry
{
    BYTE GrayscaleBits; / * Значимые биты шкалы серого * /
    BYTE AlphaBits; / * Значимые биты альфа-канала * /
} SBITCHUNKENTRY;
 
 / * Truecolor с альфа-каналом (ColorType 6) данные изображения * /
typedef struct _sBITChunkEntry
{
    BYTE RedBits; / * Красные значащие биты * /
    BYTE GreenBits; / * Зеленые значащие биты * /
    BYTE BlueBits; / * Синие значащие биты * /
    BYTE AlphaBits; / * Значимые биты альфа-канала * /
} SBITCHUNKENTRY;
 
Блок текстовых данных

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

 typedef struct _tEXtChunkEntry
{
    char Keyword []; / * Тип информации, хранящейся в тексте * /
    BYTE NullSeparator; / * В качестве разделителя используется символ NULL * /
    char Text []; / * Текстовые данные * /
} TEXTCHUNKENTRY;
 

Ключевое слово - это поле символьных данных длиной от 1 до 79. байты. Это поле может содержать любой печатный символ Latin-1, кроме НОЛЬ. Также разрешены пробелы.

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

Текст - это поле символьных данных, которое представляет собой фактические сохраненные текстовые данные. в куске. Длина этого поля определяется значением параметра Поле DataLength в заголовке блока.

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

Название
Автор
Описание
Авторское право
Время создания
Программное обеспечение
Заявление об ограничении ответственности
Предупреждение
Источник
Комментарий

Дополнительные ключевые слова могут быть определены через публичную регистрацию или могут быть изобретены отдельными приложениями.

Фрагмент времени последнего изменения изображения

Блок Image Last-Modification Time хранит время, когда изображение было последнее изменение (а не время первого создания изображения). В Формат данных этого чанка следующий:

 typedef struct tIMEChunkEntry
{
    СЛОВО Год; / * Годовое значение (например, 1996) * /
    BYTE Месяц; / * Значение месяца (1-12) * /
    BYTE День; / * Дневное значение (1-31) * /
    БАЙТ Час; / * Значение часа (0-23) * /
    BYTE Минуты; / * Минутное значение (0-59) * /
    BYTE Second; / * Второе значение (0-60) * /
} ТИМЕЧУНКЕНТРЫ;
 
Фрагмент прозрачности

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

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

В этом блоке есть три возможных формата данных в зависимости от от формата данных изображения, как указано в поле ColorType в блоке IHDR:

 / * Данные изображения в оттенках серого (ColorType 0) * /
typedef struct _tRNSChunkEntry
{
    WORD TransparencyValue; / * Прозрачный цвет * /
} TRNSCHUNKENTRY;
 
 / * Данные изображения Truecolor (ColorType 2) * /
typedef struct _tRNSChunkEntry
{
    WORD RedTransValue; / * Красный образец прозрачного цвета * /
    WORD GreenTransValue; / * Зеленый образец прозрачного цвета * /
    WORD BlueTransValue; / * Синий образец прозрачного цвета * /
} TRNSCHUNKENTRY;
 
 / * Данные изображения с индексированным цветом (ColorType 3) * /
typedef struct _tRNSChunkEntry
{
    BYTE TransparencyValues ​​[]; / * Прозрачные цвета * /
} TRNSCHUNKENTRY;
 
Блок сжатых текстовых данных

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

Данные изображения

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

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

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

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

Пиксели с несколькими выборками содержат две или более выборки на пиксель. Образцы в пиксели с несколькими выборками могут иметь глубину 8 или 16 бит, и все образцы в пикселе должны быть одинакового размера. Пиксели с несколькими выборками могут диапазон глубины от 16 до 64 бит.

Например, типичный пиксель серой шкалы содержит один 8-битный образец.Типичный 24-битный пиксель RGB содержит три 8-битные сэмплы, в то время как нетипичный 64-битный RGBA пиксель будет содержать четыре 16-битных отсчета. Обратите внимание, что как одиночные, так и многоэлементные пиксели, которые имеют образцы с глубиной цвета, отличной от 8 или 16 требуется использовать образец следующего большего размера. Например, чтобы хранить 10-битный компонент, вы должны использовать 16-битный образец. Неиспользованный биты в выборке заполняются либо установкой на ноль (не рекомендуется для битовой глубины менее 8 бит / отсчет, но для более высокой битовой глубины, нулевое заполнение может значительно увеличить сжатие) или линейное масштабирование выборки для заполнения диапазона возможных значений (рекомендуемые).Авторы PNG рекомендуют быстрое метод увеличения путем репликации самых левых значащих битов образца.

Альфа-канал

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

Альфа-значение указывает уровень прозрачности этого пикселя. В минимальное значение битовой глубины (всегда 0) означает полную прозрачность, а максимальное значение битовой глубины указывает на полную непрозрачность. Если альфа-маска не сохранена, предполагается, что пиксель полностью непрозрачный.

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

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

Прогрессивный дисплей наиболее полезен при получении PNG-файл через медленную передачу (например, тот, который соединяет ваш веб-браузер с Интернетом). Постепенное «угасание» "эффект" обычно позволяет пользователю различать содержание изображения. прежде, чем он отобразится полностью.Эта функция очень полезна если изображение представляет собой меню на веб-странице или изображение, которое вам не нужно тратить время на скачивание.

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

Типичная схема чересстрочной развертки, например, используемая GIF, просто меняет порядок, в котором строки развертки сохраняются.Например, вместо хранения строк последовательно как 0, 1, 2, 3, 4, 5, 6, ..., схема чередования может хранить строки развертки как 0, 8, 4, 9, 2, 10, 5, ... в файл. GIF использует этот тип схемы чересстрочной развертки и сохраняет (или передает) данные изображения за четыре прохода 1/8, 1/8, 1/4 и 1/2.

PNG использует несколько иной подход. чередование изображений с использованием 7-проходной схемы, известной как Adam7, после ее изобретатель Адам М. Костелло. Adam7 использует первые шесть проходов для построения вверх по всем четным строкам развертки (0, 2, 4, 6 ,...) и финал (седьмой) проход для заполнения оставшихся нечетных строк развертки (1, 3, 5, 7 ...) на изображении.

Вместо того, чтобы содержать пиксели для всего линии развертки, первые шесть проходов содержат определенные пиксели только каждой второй строки развертки. Каждый из первых двух проходов содержит 1/64 пикселей изображения. Третий проход содержит 1/32, четвертый проход 1/16, пятый проход 1/8, шестой проход 1/4 и седьмой (последний) проход 1/2 данных изображения.

Само изображение создается на дисплее, сначала как 8x8 квадраты, затем прямоугольники 4x8, затем квадраты 4x4, затем Прямоугольников 2х4, затем квадратов 2х2, а затем 1х2 прямоугольники. Последний проход заполняет пиксели нечетных линии развертки.

Чередование Adam7 позволяет появиться прогрессивному наращиванию пикселей. намного быстрее на дисплее, чем если бы целые строки развертки были отображены. Пиксели на изображении также отображаются более рассеянный узор, позволяющий человеческому глазу различать типичные изображение PNG с чересстрочной разверткой только после 20–30 процентов данные изображения были получены, по сравнению с 50 процентами или более необходимо из схемы чересстрочной развертки GIF.

Обратите внимание, однако, что метод чересстрочной развертки PNG делает компромисс между размером и скоростью. Гифка схема чересстрочной развертки просто меняет порядок хранения строк развертки, и не оказывает большого влияния на объем памяти на одну строку развертки. В схема PNG, каждый проход, кроме последнего, переносит несмежные пиксели; например, проход 1 содержит каждый 8-й пиксель из каждую 8-ю строчку.

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

Чередование Adam7 выполняется с использованием шаблона фильтра ниже.Несжатые данные изображения PNG чередуются при первом воспроизведении этого Карта 8x8 по всему растровому изображению. Затем данные изображения сканируются семь раз. раз, и значения пикселей, указанные на карте, считываются для определения какие значения пикселей сохраняются или передаются во время каждого прохода.

1

6

4

6

2

6

4

6

7

7

7

7

7

7

7

7

5

6

5

6

5

6

5

6

7

7

7

7

7

7

7

7

3

6

4

6

3

6

4

6

7

7

7

7

7

7

7

7

5

6

5

6

5

6

5

6

7

7

7

7

7

7

7

7

Сжатие данных

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

Deflate - это вариант алгоритма сжатия LZ77, изначально запатентован (4464650) Лемпелем, Зивом, Коэном и Истманом в 1981 году.Deflate использует скользящее окно переменного размера и отсортированные хеш-таблицы для идентифицирует шаблоны данных и сжимает их с помощью кодирования Хаффмана. PNG использует вариант Deflate, который не использует отсортированные хеш-таблицы, поэтому не подпадает под действие каких-либо патентных притязаний или лицензионные соглашения.

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

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

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

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

Фильтр Up сохраняет разницу между байтами в текущем пиксель и связанный байт в том же пикселе предыдущего сканирования линия. Фильтр «Среднее значение» сохраняет различия между текущими пиксель от среднего значения пикселей чуть выше и слева.

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

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

Текущую спецификацию PNG можно найти на следующей веб-странице:

http://sunsite.unc.edu/boutell/png.html

и следующие FTP-сайты:

ftp://swrinde.nde.swri.edu/pub/png/documents/
ftp: // ftp.uu.net:/textonly/png/documents/

Ваш лучший веб-источник информации и ресурсов PNG находится на Греге. Домашняя страница группы Roelofs PNG:

http://quest.jpl.nasa.gov/PNG/

Вопросы о PNG можно задать в группе новостей comp.graphics.misc или по электронной почте. к:

[адрес электронной почты защищен]

или направлен основному автору спецификации PNG:

Thomas Boutell
Электронная почта: [адрес электронной почты защищен]

Разработчики PNG могут присоединиться к списку рассылки PNG.Отправьте письмо на номер [адрес электронной почты защищен] .

Другие списки рассылки PNG включают:

Эти списки содержат общее обсуждение PNG, объявления, связанные с PNG, и обсуждения относительно реализации PNG. Узнать больше о сервере списков рассылки отправьте электронное письмо на номер [адрес электронной почты защищен] со словом "help" (и ничего больше) в теле сообщения.

Официальный FTP-архив PNG:

ftp: // ftp.uu.net/textonly/png/

Эталонная реализация PNG на переносном языке C читатель и писатель доступны по адресу:

ftp://ftp.uu.net/textonly/png/src/

Тестовые изображения PNG для вашего удовольствия от сравнительного анализа: Доступна с:

ftp://ftp.uu.net/textonly/png/images/

PNG материалы, включая зеркало всего в ftp: // ftp.uu.net/textonly/png/ также можно найти по адресу:

ftp://swrinde.nde.swri.edu/pub/png/

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

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

Группа 42, Inc.
Голосовой: 800-520-0042
Голосовой: 513-831-3400
Электронная почта: [адрес электронной почты защищен]
WWW: http://www.group42.com/

Хороший обзор PNG можно найти в:

Крокер, Ли Дэниел, "PNG: Портативная сеть" Graphic Format, Журнал доктора Добба , vol.20, нет. 232, июль 1995 г., стр. 36-44.

Код для указанной выше статьи доступен по адресу:

ftp://ftp.mv.com/pub/ddj/1995/1195.07/ptot.zip

Официальный пресс-релиз, ориентированный на CompuServe, находится по адресу:

http://www.compuserve.com/new/news_rel/png2.html


Эта страница взята из Энциклопедии форматов графических файлов и имеет лицензию O'Reilly по лицензии Creative Common / Attribution.

Дополнительные ресурсы

Метаданные в файлах PNG

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

PNG всегда начинается с 8-байтовой подписи: 137 80 78 71 13 10 26 10 (десятичные значения). Остальная часть файла состоит из серии фрагментов, начиная с фрагмента IHDR и заканчивая фрагментом IEND.31-1 байт. Тип блока 4 байта Коды типов могут состоять только из прописных и строчных букв ASCII, и они чувствительны к регистру.
+ Регистр первой буквы указывает, является ли блок критическим или нет. Если первая буква в верхнем регистре, фрагмент критичен; в противном случае блок является вспомогательным (более подробная информация указана ниже).
+ Регистр второй буквы указывает, является ли блок "общедоступным" (либо в спецификации, либо в реестре общедоступных блоков специального назначения) или "частным" (не стандартизованным).Прописные буквы являются общедоступными, а строчные - частными.
+ Третья буква должна быть прописной, чтобы соответствовать спецификации PNG. Он зарезервирован для будущего расширения.
+ Регистр четвертой буквы указывает, можно ли копировать фрагмент редакторами, которые его не распознают. Данные фрагмента Длина байта Байты данных, соответствующие типу блока, если есть. Это поле может быть нулевой длины. CRC 4 байта CRC (Cyclic Redundancy Check), вычисленная для предыдущих байтов в блоке, включая код типа блока и поля данных блока, но не включая поле длины.CRC присутствует всегда, даже для фрагментов, не содержащих данных.

Рис.1. Макет чанка.

Чанков объявляются критическими или вспомогательными . Блоки, необходимые для успешного отображения содержимого файла, называются критическими блоками. Если декодер обнаруживает критический фрагмент, который он не распознает, он должен прекратить чтение файла или предоставить пользователю соответствующее предупреждение.

Имя Несколько Ограничения для заказа Контент
IHDR Должен быть первым ширина, высота и битовая глубина изображения
PLTE Перед IDAT палитра; список цветов.
IDAT Есть Несколько IDAT должны быть последовательными - фактические данные изображения, которые могут быть разделены между несколькими блоками IDAT. Такое разделение немного увеличивает размер файла, но позволяет генерировать PNG в потоковом режиме.
IEND Должен быть последним он просто отмечает конец изображения. Поле данных чанка пусто.

Фиг.2. Некоторые стандартные критические блоки.

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

Имя Несколько Ограничения для заказа Контент
cHRM До PLTE и IDAT - координаты цветности основных цветов дисплея и точки белого.
ГАМА До PLTE и IDAT значений гаммы.
iCCP До PLTE и IDAT цветовой профиль ICC.
SBIT До PLTE и IDAT точность цветопередачи исходных данных.
sRGB До PLTE и IDAT стандартное цветовое пространство sRGB.
лв. После PLTE; перед IDAT цвет фона по умолчанию. Он предназначен для использования, когда нет лучшего выбора, например, в автономных средствах просмотра изображений.
hIST После PLTE; перед IDAT гистограмма или общее количество каждого цвета в изображении.
тРН После PLTE; перед IDAT информация о прозрачности.Для проиндексированных изображений он хранит значения альфа-канала для одной или нескольких записей палитры. Для полноцветных изображений и изображений в градациях серого он хранит одно значение пикселя, которое следует рассматривать как полностью прозрачное.
pHYs Перед IDAT предполагаемый размер пикселя и / или соотношение сторон изображения.
sPLT Есть Перед IDAT палитра для использования, если полный диапазон цветов недоступен.
ВРЕМЯ Нет - время последнего изменения изображения.
iTXt Есть Нет Текст UTF-8, сжатый или несжатый, с дополнительным языковым тегом.
ТЕКСТ Есть Нет текст, который может быть представлен в ISO / IEC 8859-1.
zTXt Есть Нет сжатый текст с теми же ограничениями, что и tEXt.

Рис.3. Некоторые стандартные вспомогательные блоки.

2. Блоки текстовой информации - метаданные в формате PNG¶

Блоки iTXt, tEXt и zTXt (блоки текста) используются для передачи текстовой информации, связанной с изображением. Это места, где мы можем найти все метаданные файла PNG.

Каждый из текстовых фрагментов содержит в качестве своего первого поля ключевое слово, которое указывает тип информации, представленной текстовой строкой. Следующие ключевые слова предопределены и должны использоваться там, где это необходимо:
Ключевые слова Объяснить
Название Короткое (однострочное) название или подпись к изображению
Автор Имя создателя изображения
Описание Описание изображения (возможно, длинное)
Авторское право Уведомление об авторских правах
Время создания Время создания оригинального изображения
Программное обеспечение Программное обеспечение, используемое для создания образа
Заявление об ограничении ответственности Заявление об отказе от ответственности
Предупреждение Предупреждение о характере содержимого
Источник Устройство, используемое для создания образа
Комментарий Разные комментарии; преобразование из комментария GIF

Другие ключевые слова могут быть изобретены для других целей.Ключевое слово должно состоять как минимум из одного символа и содержать не более 80 символов. Ключевые слова, представляющие общий интерес, могут быть зарегистрированы у разработчиков спецификации PNG. Согласно спецификации XMP, пакет XMP встраивается в графический файл PNG путем добавления фрагмента типа iTXt с ключевым словом «XML: com.adobe.xmp». Нет стандарта для данных Exif, IPTC. В Exiv2, когда добавляются Exif, IPTC, они сохраняются в текстовых блоках zTXt и сохраняются как ASCII.

2.1 ТЕКСТ Текстовые данные¶

В формате:

Ключевое слово Нулевой разделитель Текст
1-79 байтов 1 байт байтов

Текст интерпретируется в соответствии с набором символов ISO / IEC 8859-1 (Latin-1).Текстовая строка может содержать любой символ Latin-1. Новые строки в текстовой строке должны быть представлены одним символом перевода строки (десятичное число 10).

2.2 zTXt Сжатые текстовые данные¶

В формате:

Ключевое слово Нулевой разделитель Метод сжатия Сжатый текст
1-79 байтов 1 байт 1 байт байтов

Блок zTXt содержит текстовые данные, как и tEXt; однако zTXt использует сжатие.Блоки zTXt и tEXt семантически эквивалентны, но zTXt рекомендуется для хранения больших блоков текста. Единственное допустимое в настоящее время значение для Compression method - 0 (сжатие спустить / накачать)

2.3 Текстовые данные iTXt International¶

В формате:

Ключевое слово Нулевой разделитель Флаг сжатия Метод сжатия Тег языка Нулевой разделитель Ключевое слово переведено Нулевой разделитель Текст
1-79 байтов 1 байт 1 байт 1 байт 0 или более байтов 1 байт 0 или более байтов 1 байт 0 или более байтов

Этот фрагмент семантически эквивалентен фрагментам tEXt и zTXt, но текстовые данные находятся в кодировке UTF-8 набора символов Unicode вместо Latin-1

Пример:
В этом примере используется версия exiv2 (.exe), поставляемый с v0.25, чтобы показать структуру файла. Параметр -pa печатает все метаданные, -pS печатает структуру файла, -pX извлекает необработанные данные XMP / xml.

841 rmills @ rmillsmbp: ~ / gnu / exiv2 / trunk / website $ exiv2 -pa ~ / png
Exif.Image.ImageWidth SLong 1320
...
Exif.Thumbnail.JPEGInterchangeFormatLength Long 1 4376
Iptc.Application2.ObjectName String 4 ovni
...
Iptc.Application2.RecordVersion Short 1 4
Xmp.dc.title LangAlt 1 lang = "x-default" это заголовок
842 rmills @ rmillsmbp: ~ / gnu / exiv2 / trunk / website $ exiv2 -pS ~ / png
СТРУКТУРА PNG-ФАЙЛА: / Users / rmills / png
 адрес | индекс | chunk_type | длина | данные
       8 | 0 | IHDR | 13 |
      33 | 1 | zTXt | 8769 | Необработанный тип профиля exif..x ... [r ..
    8814 | 2 | zTXt | 270 | Тип исходного профиля iptc..x. = QKn.
    9096 | 3 | iTXt | 2524 | XML: com.adobe.xmp..... 


  
    
      
        
           это заголовок 
        
      
    
  


844 rmills @ rmillsmbp: ~ / gnu / exiv2 / trunk / website $ 

Большая часть файла состоит из блоков IDAT, которые содержат само изображение (пиксели).Что еще более интересно, блоки zTXt содержат данные Exif и Iptc. Чанк iTXt содержит XMP / xml. Блоки данных Exif и Iptc хранятся с использованием спецификации контейнера TIFF. Пример в документе TIFF показывает, как извлечь и распечатать структуру данных Exif, записанных в формате TIFF. http://dev.exiv2.org/projects/exiv2/wiki/The_Metadata_in_TIFF_files

Список литературы¶

Как работает PNG. Портативная сетевая графика (PNG) имеет… | Автор Colt McAnlis

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

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

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

Дельта-кодирование - один из самых мощных методов сжатия чисел. Основная идея состоит в том, что вы можете представить любое значение как отличие от предыдущего значения. Итак,

[2,3,4,5,6,7,8] может стать [2,1,1,1,1,1,1], где

[2, 3–2 = 1, 4 –3 = 1, 5–4 = 1, 6–5 = 1, 7–6 = 1, 8–7 = 1]

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

Формат PNG использует дельта-кодирование в формате, который он называет «фильтрацией». По сути, для каждой строки сканирования пикселей текущий пиксель кодируется в некотором отношении к пикселю слева, пикселю вверху и пикселю вверху слева.

Например, если мы закодировали данный пиксель, указав его разницу между средним значением A и B (X - ((A + B) / 2), то мы получим:

Фильтрация берет ABC и использует это для предсказывает значение x.Значение, которое мы заменяем x, является разницей между предсказанием и фактическим значением.

Теперь стоит отметить, что каждая строка может немного отличаться, поэтому PNG позволяет выбрать 1 из 5 различных режимов для каждой строки:

  • Без фильтрации
  • Разница между X и A
  • Разница между X и B
  • Разница между X и (A + B) / 2 (среднее значение)
  • Предиктор Паэта (линейная функция от A, B, C)

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

Пример применения фильтрации к двум строкам значений пикселей. Затронутые пиксели выделены синим цветом.

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

А формат PNG имеет несколько отличных способов выбрать, какой фильтр использовать на канале; Хотя грубая сила является наиболее прямой, она просто прямая.Вместо этого разработчики экспериментировали с разными типами изображений и пришли к некоторым практическим правилам, близким к оптимальным; например, используйте фильтры «Нет» для изображений палитры и изображений в оттенках серого менее 8 бит. А для других изображений выберите фильтр, который минимизирует сумму абсолютных различий; Вместо использования по модулю 256 вместо стандартной знаковой математики возьмите значение abs, сложите их все вместе для данной строки и сравните суммы для других типов фильтров. Выберите фильтр, который дает наименьшую сумму.

Как только фильтрация происходит в строке сканирования, она передается потомку алгоритма LZ77, известному как DEFLATE; Этот алгоритм сочетает в себе кодирование LZ77 с кодером Хаффмана. Это почти идентично компрессорам, таким как PKWARE, PKZIP, GZip и т. Д. Реализация является стандартной, но имеет некоторые интересные оговорки, когда дело касается данных изображений.

  1. Пределы дефлятирования соответствуют длинам от 3 до 258 символов; что дает максимально возможную степень сжатия около 1032: 1.
  2. Если совпадение составляет менее 3 символов, то вы несете некоторые накладные расходы для представления символа.

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

Обратите внимание на изображение ниже. Версия 270x90 имеет размер всего 20 КБ, а версия 270x92 в 2 раза больше.

Логически это кажется неправильным. Добавление 540 пикселей к изображению не должно приводить к двукратному увеличению сжатия. Однако если мы присмотримся немного ближе, мы сможем понять, почему это происходит; Следующая тепловая карта изображений показывает, насколько сжат данный пиксель.Темно-синий = очень сжатый, желтый / красный = не очень сжатый

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

Если вы хотите узнать, насколько хорошо ваши собственные изображения сжимаются с помощью PNG, проверьте PNGThermal.

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

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

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

И, наконец, фрагмент конца файла . И это основные фрагменты, но есть также целый ряд других фрагментов, таких как:

  • Цвет фона по умолчанию
  • Координаты цветности для отображения белых точек
  • Гамма-спецификации
  • Информация о гистограмме
  • Текстовые данные с языком или Информация о метаданных
  • Информация о цветовом пространстве
  • Данные стереоизображения
  • Фрагмент, который отмечает последний раз, когда файл был изменен.
  • И данные прозрачности.

Теперь эти фрагменты - это то место, на которое вам нужно обратить внимание, потому что ваше приложение для редактирования фотографий помещает туда много мусора. Например, при сохранении файла PNG из Photoshop создается блок с надписью «», это изображение было создано в Photoshop. ”Этот фрагмент не имеет ничего общего с данными видимых пикселей, но все же включен в сам файл. Таким образом, УДАЛЕНИЕ бесполезных фрагментов имеет решающее значение для обеспечения файлов небольшого размера. На изображении ниже показано изображение размером 16x16 пикселей, сохраненное из Photoshop как обычный PNG, а другое - с использованием опции Photoshop « экспорт в Интернет », которая удаляет всю чепуху.

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

Формат PNG может ТАКЖЕ поддерживать различные типы форматов пикселей, поэтому вы можете создать оптимальный

Индексированный = 1 канал, может быть 1,2,4,8 бит на канал

Оттенки серого = 1 канал, может быть 1,2,4, 8,16 бит на канал

Серый + альфа = 2 канала, может быть 8 или 16 бит на канал

Truecolor (RGB) = 3 канала, может быть 8 или 16 бит на канал

RGBA = 4 канала, может быть 8 или 16 бит на канал

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

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

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

Давайте вернемся в 1985 год, когда Unisys подала патент на алгоритм сжатия LZW, в то время ничего особо интересного. Несколько лет спустя, когда CompuServe изобрел формат 89a (который позже стал форматом GIF), они использовали LZW в качестве основы, не понимая, что он запатентован. Unisys не заботился об этом до 1993 года, когда браузер Netscape добавил поддержку тега IMG HTML наряду с поддержкой формата 89a. В течение года анимированные изображения стали повальным увлечением в Интернете, и Unisys начала обеспечивать соблюдение своего патента.CompuServe и Unisys в конечном итоге достигли судебного соглашения в декабре 1994 года, объявив, что Unisys начнет собирать роялти за все программное обеспечение, использующее графический формат 89a. Через несколько месяцев после этого решения группа инженеров разработала совершенно новый, свободный от патентов формат, известный как Portable Network Graphics или PNG.

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

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

И если вам интересно увидеть наиболее простую реализацию кодировщика PNG, ознакомьтесь с этой замечательной сутью, которая упаковывает все это в ~ 40 строк кода.

Конечно, есть WebP, который даст вам и то, и другое .. Но это отдельная статья;)

ЭЙ !

Хотите уменьшить ваши PNG-файлы? Ознакомьтесь с последующим постом о файлах меньшего размера PNG.

Хотите знать, как работают файлы JPG и как их уменьшить?

Хотите большего качества сжатия данных? Купи мою книгу!

TweakPNG

TweakPNG

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

Скриншот TweakPNG:

Чтобы загрузить TweakPNG, сохраните следующую ссылку:

tweakpng-1.4.6.zip (около 500К) 07.09.2014

Вы также можете просмотреть файл README.

Разработка размещена по адресу GitHub.

Чтобы установить его, извлеките файлы из ZIP-файла в папку на вашем выбор (e.грамм. C: \ Program Files \). Чтобы запустить его, откройте либо x86 \ tweakpng.exe , либо, если вы используете 64-разрядную версию Windows x64, x64 \ tweakpng.exe .

TweakPNG - бесплатное программное обеспечение, распространяемое на условиях Стандартная общественная лицензия GNU (GPL) версии 3. Исходный код C ++ для TweakPNG включен в zip-файл.


История

v1.4.6 (7 сентября 2014 г.) (скачать):

  • Сервисный релиз.
  • Функция «Копировать изображение в буфер обмена».
  • Сделано опционально "Исправить неквадратные пиксели".

v1.4.5 (26 декабря 2012 г.) (скачать):

  • Исправления и улучшения, связанные со сжатым текстом.
  • Изменены параметры цвета фона средства просмотра.

v1.4.4 (24 августа 2012 г.) (скачать):

  • Улучшенная поддержка профилей ICC.
  • Улучшено качество изображения в средстве просмотра изображений с частичной прозрачностью.

v1.4.3 (6 марта 2012 г.) (скачать):

v1.4.2 (9 августа 2011 г.) (загрузить):

  • Переписал декодер PNG для программы просмотра. Чуть точнее гамма-коррекция.
  • Обновлено до libpng 1.5.4.

v1.4.1 (9 января 2011 г.) (скачать):

  • Поддержка 64-битных сборок.
  • Поддержка блоков sCAL.
  • Разрешить перетаскивание в окно просмотра.
  • Незначительные изменения горячих клавиш, значков и т. Д.
  • Обновлено до libpng 1.5.0.

v1.4.0 (5 июня 2010 г.) (скачать):

  • Полная поддержка блоков oFF, acTL, fcTL.
  • Поддержка фильтров (инструментов, изменяющих файл PNG).
  • Добавлены пункты меню «Закрыть» и «Открыть заново».
  • Немного изменена структура файла ZIP; теперь включает имя каталога.
  • Обновлено до libpng 1.4.2 и zlib 1.2.5.

v1.3.2 (22 августа 2009 г.) (скачать):

  • Исправлены ошибки при восстановлении положения вспомогательных окон.
  • Исправлено положение контекстного меню при использовании нескольких мониторов.
  • Обновлено до libpng 1.2.39.

v1.3.1 (7 декабря 2008 г.) (скачать):

  • Полная поддержка блоков STER.
  • Поддержка чанков APNG только для чтения.
  • Меньше вероятность сбоя, если вы попытаетесь отредактировать фрагмент неправильного размера.
  • Обновлено до libpng 1.2.33.

v1.3.0 (16 ноя 2008) (скачать):

  • Поддержка блоков iTXt.
  • Обновлен двоичный файл для использования последних версий zlib и libpng.
  • Теперь двоичный файл является приложением Unicode.
  • По крайней мере, на данный момент распространяемый мною пакет не включает двоичный файл, работающий в Windows 95/98 / ME. Единственная причина в том, что компилятор, который я использовал, не может создавать такие двоичные файлы.
  • Изменен исходный код для условной поддержки Unicode.
  • Изменен исходный код для использования строковых функций strsafe.
  • Множество других доработок исходного кода.
  • Исправлена ​​пара мелких ошибок. Но более чем вероятно представили более новые ошибки, чем были исправлены из-за вышеупомянутых изменений исходного кода.
  • Лицензия изменена с GPLv2 на GPLv3.

v1.2.1 (11 декабря 2004 г.) (скачать):

  • Обновлен двоичный файл для использования последних версий zlib (1.2.2) и libpng (1.2.8).
  • Два или три очень маленьких улучшения и исправления.

v1.2.0 (29 декабря 2003 г.):

  • Добавлен просмотрщик изображений (Инструменты-> Показать просмотрщик изображений). Это делает использование другого моего проекта, PNGDIB.
  • Редактор палитры теперь используется для выбора фона в оттенках серого и прозрачные цвета.
  • Еще несколько мелких изменений.

v1.1.2 (24 ноября 2003 г.):

  • Возможность добавить TweakPNG в контекстные меню Windows Explorer.
  • Предупреждает при попытке выйти без сохранения изменений.
  • Компилируется чисто в MSVC6.

v1.1.1 (3 января 2001 г.):

  • Исправлена ​​проблема с записью неправильной CRC после редактирования фрагмента IHDR.

v1.1.0 (28 декабря 2000 г.):

  • Редактирование палитры, включая фрагменты bKGD и tRNS для изображений с палитрой.
  • Постоянные размеры окон и ширину столбцов, а также постоянное положение редактора фрагментов текста и редактора палитры.
  • Переставил некоторые меню
  • Редактировать фрагмент IHDR (хотя особых причин для этого нет ...)
  • Контекстное меню
  • Функция «Объединить все IDAT»
  • Исправлены кое-какие ошибки ...

v1.0.1 (27 декабря 1999 г.):

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

v1.0.0 (3 декабря 1999):


TweakPNG написал Джейсон Саммерс. Вы можете отправить комментарии и вопросы о TweakPNG в [email protected]

(Передача) Структура файла PNG (формат изображения PNG) подробно

Анализ структуры файла PNG (на: понимание формата хранения файлов PNG)

Предисловие

Я знаю, что при разработке мобильного приложения J2ME мы можем использовать изображения в формате PNG при использовании изображений (даже на некоторых мобильных телефонах мы можем использовать только изображения в формате PNG), хотя использование изображений может добавить много ярких моментов к однако наше приложение поддерживает только формат PNG.Изображение ограничивает возможность дальнейшего развития (на самом деле следует сказать, что возможности обработки на мобильной платформе ограничены). В MIDP2 или некоторые поставщики (например, NOKIA) предоставляют API-интерфейсы, которые предоставляют методы для drawPixels / getPixels, которые дополнительно улучшают обработку разработчика. Гибкость изображения, однако сегодня MIDP2 еще не полностью популярен, нам необходимо реализовать этот метод в MIDP1 .0 тоже прихотлив, поэтому для достижения более продвинутого приложения мы должны полностью использовать потенциал PNG.

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

Для файла PNG заголовок всегда описывается фиксированным числом байтов:

Десятичное число 137 80 78 71 13 10 26 10
Шестнадцатеричное число 89 50 4E 47 0D 0A 1A 0A

Первый байт 0x89 находится вне диапазона символов ASCII. Это сделано для того, чтобы некоторые программы не могли обрабатывать файлы PNG как текстовые файлы. Оставшаяся часть файла состоит из более чем 3 фрагментов PNG в определенном порядке.Следовательно, стандартная файловая структура PNG должна выглядеть так:

Файл логотипа в формате PNG Блок данных PNG …… Блок данных PNG

Блок данных PNG (Chunk)

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

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

Блок данных в формате PNG

Символ блока данных

Имя блока

Несколько блоков данных

Дополнительно

Лимит местоположения

IHDR Блок заголовка файла Первый кусок
cHRM Блок данных основного цвета и точки белого Есть До PLTE и IDAT
ГАМА Блок гаммы изображения Есть До PLTE и IDAT
SBIT Пример действительного блока битовых данных Есть До PLTE и IDAT
PLTE Блок данных палитры Есть Перед IDAT
лв. Блок данных цвета фона Есть До IDT после PLTE
hIST Блок гистограммы изображения Есть До IDT после PLTE
тРН Блок данных прозрачного изображения Есть До IDT после PLTE
ВЫКЛ (выделенный блок общедоступных данных) Есть Перед IDAT
pHYs Блок данных о физическом размере пикселя Есть Перед IDAT
sCAL (выделенный блок общедоступных данных) Есть Перед IDAT
IDAT Блок данных изображения Есть Непрерывно с другими IDAT
ВРЕМЯ Временной блок последнего изменения изображения Есть Без ограничений
ТЕКСТ Блок данных текстовой информации Есть Есть Без ограничений
zTXt Блок сжатого текста Есть Есть Без ограничений
FRAc (выделенный блок общедоступных данных) Есть Есть Без ограничений
gIFg (выделенный блок общедоступных данных) Есть Есть Без ограничений
ПОДАРОК ​​ (выделенный блок общедоступных данных) Есть Есть Без ограничений
GIFx (выделенный блок общедоступных данных) Есть Есть Без ограничений
IEND Данные конца изображения Последний блок данных

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

Структура блока данных

В файле PNG каждый блок данных состоит из четырех частей, а именно:

Имя Количество байтов Описание
Длина 4 байта Определяет длину поля данных в блоке данных, длина которого не превышает (2 31 -1) байтов
Код типа блока 4 байта Код типа блока состоит из букв ASCII (A-Z и a-z)
Chunk Data (данные блока данных) Переменная длина Хранить данные, указанные кодом типа блока
CRC (циклический контроль избыточности) 4 байта Сохранение циклических избыточных кодов для обнаружения ошибок

Значение в поле CRC (проверка циклическим избыточным кодом) вычисляется на основе данных в поле Chunk Type Code и поле Chunk Data.Специфический алгоритм CRC определен в ISO 3309 и ITU-T V.42, и его значение вычисляется с помощью следующего полинома генерации кода CRC:

x 32 + x 26 + x 23 + x 22 + x 16 + x 12 + x 11 + x 10 + x 8 + x 7 + x 5 + x 4 + x 2 + x + 1

Ниже давайте посмотрим на структуру каждого ключевого блока данных.

IHDR

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

Блок данных заголовка состоит из 13 байтов, и его формат показан в следующей таблице.

Имя домена

Количество байтов

Описание

Ширина 4 байта Ширина изображения в пикселях
Высота 4 байта Высота изображения в пикселях
Битовая глубина 1 байт Глубина изображения:
Индексное цветное изображение: 1, 2, 4 или 8
Изображение в оттенках серого: 1, 2, 4, 8 или 16
Изображение в истинном цвете: 8 или 16
ColorType 1 байт Тип цвета:
0: изображение в градациях серого, 1, 2, 4, 8 или 16
2: изображение в истинных цветах, 8 или 16
3: Индексное цветное изображение, 1, 2, 4 или 8
4: Изображение в оттенках серого с альфа-каналом данные канала, 8 или 16
6: полноцветное изображение с данными альфа-канала, 8 или 16
Метод сжатия 1 байт Метод сжатия (алгоритм, производный от LZ77)
Метод фильтрации 1 байт Метод фильтрации
Метод чересстрочной развертки 1 байт Метод чересстрочной развертки:
0: Сканирование без чересстрочной развертки
1: Adam7 (7-проходной метод с чересстрочной разверткой, разработанный Адамом М.Костелло)

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

  • В MIDP 1.0 мы можем использовать только изображения PNG версии 1.0. Таким образом, ключевые блоки данных PNG предъявляют особые требования:
    IHDR
  • Размер файла: MIDP поддерживает изображения PNG любого размера. Однако на самом деле, если изображение слишком велико, оно будет нечитаемым из-за нехватки памяти.
  • Тип цвета: поддерживаются все типы цвета, хотя отображение этих цветов зависит от возможностей отображения фактического устройства.В то же время MIDP может также поддерживать альфа-каналы, но вся информация альфа-канала игнорируется и обрабатывается как непрозрачные цвета.
  • Глубина цвета: может поддерживаться любая глубина цвета.
  • Метод сжатия: поддерживает только режим сжатия 0 (режим сжатия deflate), который точно такой же, как сжатие файла jar. Следовательно, для распаковки данных изображения PNG и распаковки файлов jar можно использовать один и тот же код. (Фактически, именно поэтому J2ME может очень хорошо поддерживать изображения PNG :))
  • Метод фильтрации: хотя в техническом документе PNG определен только метод 0, поддерживаются все пять методов!
  • Чересстрочная развертка: Хотя MIDP поддерживает как 0, так и 1, MIDP фактически не использует чересстрочную развертку при использовании чересстрочной развертки.
  • Блок
  • PLTE: поддержка
  • Блок IDAT: информация об изображении должна использовать режим 5 из 5 методов фильтрации (None, Sub, Up, Average, Paeth).
  • Блок данных IEND: это изображение PNG считается допустимым изображением PNG при обнаружении блока данных IEND.
  • Дополнительный блок данных: MIDP может поддерживать следующие блоки вспомогательных данных, однако это не требуется.

    bKGD cHRM gAMA hIST iCCP iTXt pHYs
    sBIT sPLT sRGB текстовое время tRNS zTXt

Дополнительную информацию можно найти на http://www.http: //www.http: //www.w3.org/TR/REC-png.html

PLTE

Блок палитры PLTE (блок палитры) содержит преобразованные данные, связанные с изображением с индексированным цветом, которое связано только с индексированным цветным изображением, и помещается перед блоком данных изображения.

Блок данных PLTE - это информация о палитре, определяющая изображение. PLTE может содержать от 1 до 256 информации о палитре, и каждая информация о палитре состоит из 3 байтов:

цвет

байт

значение

Красный

1 байт

0 = черный, 255 = красный

Зеленый

1 байт

0 = черный, 255 = зеленый

Синий

1 байт

0 = черный, 255 = синий

Следовательно, длина палитры должна быть кратна 3, иначе палитра будет недопустимой.4 = 16). В противном случае это приведет к тому, что изображение PNG окажется незаконным.

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

IDAT

Блок данных изображения IDAT (блок данных изображения): он хранит фактические данные и может содержать множество последовательных последовательных блоков данных изображения в потоке данных.

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

IEND

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

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

00 00 00 00 49 45 4E 44 AE 42 60 82

Нетрудно понять, что из-за определения структуры блока данных длина блока данных IEND всегда равна 0 (00 00 00 00, если информация не добавлена ​​искусственно), идентификатор данных всегда IEND (49 45 4E 44), поэтому код CRC всегда AE 42 60 82. 8 = 256)

00000030 ~ 00000062 :

Вот информация о палитре

  • 00 00 00 27 Описание Данные палитры имеют длину 39 байтов и 13 цветов.
  • 50 4C 54 45 Логотип PLTE
  • FF FF 00 цвет 0
  • FF ED 00 цвет 1
  • …… ……
  • 09 00 B2 Последний цвет, 12
  • 5F F5 BB DD Проверка CRC

00000063 ~ 000000C5 :

Эта часть содержит три блока pHY и tExt, которые не очень подробны и не описаны подробно.

000000C0 ~ 000000F8 :

Выше выбранная часть является блоком данных IDAT.

  • 00 00 00 27 Длина данных 39 байт
  • 49 44 41 54 Логотип IDAT
  • 78 9C ... Сжатые данные, метод сжатия LZ77
  • DA 12 06 A5 Проверка CRC

Часть сжатых данных IDAT будет подробно описана позже.

000000F9 ~ 00000104 :

блок данных IEND, эта часть, как упоминалось выше, обычно должна быть

00 00 00 00 49 45 4E 44 AE 42 60 82

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

Файл PNG после удаления блока вспомогательных данных. Размер файла теперь составляет 147 байт, а исходный размер файла - 261 байт.После уменьшения размера файла содержимое изображения не изменяется.

Фактически, мы можем сделать некоторые интересные вещи, изменив значение цвета палитры, например, реализовать эффект потока волны облака / воды, реализовать эффект затухания изображения и т. Д. Здесь дайте ссылку для всех на посмотреть, может быть, более прямо: http: //blog.csdn.net/flyingghost/archive/2005/01/13/251110.aspx, Я написал эту статью, вдохновившись этой статьей.

Как указано в, блоки данных IDAT генерируются с использованием алгоритма сжатия LZ77.Из-за ограниченных возможностей мобильного процессора мы по-прежнему используем LZ77, если мы генерируем блоки данных IDAT. Алгоритм сжатия значительно снизит эффективность. Поэтому для эффективности можно использовать только несжатый алгоритм LZ77, и реализована конкретная реализация алгоритма LZ77. Эта статья не предназначена для изучения. Если вас интересует реализация JAVA алгоритма LZ77, вы можете обратиться к следующим двум сайтам:

Справочные материалы:

Информационный документ о формате файла

PNG: http: // www.w3.org/TR/REC-png.html
- одно из немногих описаний китайского формата PNG: http://dev.gameres.com/Program/Visual/Other/PNGFormat.htm
RFC-1950 (ZLIB Compressed Data Format Спецификация) : ftp: //ds.internic.net/rfc/rfc1950.txt
RFC-1950 (спецификация формата сжатых данных DEFLATE) : ftp: //ds.internic.net/rfc/rfc1951.txt
JAVA-реализация LZ77 алгоритм: http: //jazzlib.sourceforge.net/
Реализация JAVA алгоритма LZ77, включая версию J2ME: http://www.jcraft.com/jzlib/index.html

Исходный адрес: http://www.ismyway.com/png/png-struct1.htm

Извлечение фрагментов PNG (ZTXT, ТЕКСТ, комментарии)

Поиск инструмента

Куски PNG

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

Результаты

фрагменты PNG - dCode

Тэги: Обработка изображений

Поделиться

dCode и другие

dCode является бесплатным, а его инструменты являются ценным подспорьем в играх, математике, геокешинге, головоломках и задачах, которые нужно решать каждый день!
Предложение? обратная связь? Жук ? идея ? Запись в dCode !

Рекламные объявления

Ответы на вопросы (FAQ)

Что такое кусок PNG?

Файлы

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

Как прочитать текстовый фрагмент?

Блок tEXt доступен для чтения непосредственно в файле (в текстовом редакторе или шестнадцатеричном редакторе), он начинается с tEXt (74455874 в шестнадцатеричном формате ascii), за которым следует заголовок и свободная область комментариев.

Пример: TEXt => My Title Это комментарий в формате PNG.

Как читать чанк zTXt?

Блок zTXt похож на tEXt, за исключением того, что его содержимое сжимается с помощью DEFLATE.Найдите в файле zTXt (7a545874 в шестнадцатеричном формате ascii), за которым следует заголовок и двоичная область, не читаемая напрямую (из-за сжатия), эта зона должна быть распакована, прежде чем можно будет прочитать сообщение.

Задайте новый вопрос

Исходный код

dCode сохраняет за собой право собственности на исходный код онлайн-инструмента «PNG Chunks». За исключением явной лицензии с открытым исходным кодом (обозначенной CC / Creative Commons / free), любой алгоритм, апплет или фрагмент фрагментов PNG (конвертер, решатель, шифрование / дешифрование, кодирование / декодирование, шифрование / дешифрование, переводчик) или любые фрагменты PNG 'функция (вычислить, преобразовать, решить, расшифровать / зашифровать, расшифровать / зашифровать, декодировать / закодировать, перевести), написанная на любом информационном языке (Python, Java, PHP, C #, Javascript, Matlab и т. д.)), и никакая загрузка данных, скрипт, копирование и доступ к API для «PNG Chunks» не будут бесплатными, то же самое для автономного использования на ПК, планшете, iPhone или Android! dCode распространяется бесплатно и онлайн.

Нужна помощь?

Пожалуйста, посетите наше сообщество dCode Discord для запросов о помощи!
NB: для зашифрованных сообщений проверьте наш автоматический идентификатор шифра!

Вопросы / комментарии

Сводка

Похожие страницы

Поддержка

Форум / Справка

Ключевые слова

ztxt, png, idat, текст, комментарий, фрагмент, дефляция, изображение, переносимый, сетевой, графический, метаданные

Ссылки


Источник: https: // www.

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

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

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