logo
Трев_Lecture

4.2. Формат графічних файлів png

Формат PNG призначений для збереження і передачі растрових зображень. Він дає змогу зберігати зображення, бітова глибина яких досягає 16 (у шкалі сірого кольору) або 48 (у truecolor-зображеннях) біт/піксель, а також 16 біт альфа-даних. Цей формат забезпечує поетапне відображення даних, збереження інформації про прозорість, а також здійснює кодування текстової інформації. У ньому використовується метод стиснення даних без втрат.

PNG - новий формат, орієнтований на фахівців в області комп'ютерної графіки. Він розроблений як альтернатива формату GIF (Graphics Interchange Format), використання якого розробниками електронних публікацій і графічних зображень передбачає попередню оплату майбутньої реалізації зображень у цьому форматі (ліцензування). Ліцензії потрібні також для поширення програм, що читають або записують файли у форматі GIF.

Мобільний і нескладний для реалізації формат PNG за основними функціональними можливостями перевершує формат GIF.

PNG і GIF89a мають спільні ознаки:

Разом з тим формат PNG наділений більш широкими функціональними можливостями в порівнянні з форматом GIF, наприклад:

Організація файлу PNG.

Файл (або потік даних) у форматі PNG складається з 8-байтового ідентифікаційного підпису і не менше трьох порцій даних. Порція - незалежний блок даних, структура якого визначена в специфікації формату. Порції мають власний ідентифікатор, що відповідає внутрішньому формату даних, і читаються послідовно від початку до кінця файлу (потоку даних).

Концепція блоків даних, або порцій, використовується також в інших форматах, найвідомішими серед яких є GIF, IFF і RIFF. Дані у файлах таких форматів звичайно читаються послідовно, а їхні фрагменти не потрібно шукати за зміщеннями від початку файлу. Такі формати добре підходять для спільного використання з мережевими протоколами та протоколами передачі даних і сприймаються як файлові (хоча точніше було б розглядати записану в таких форматах інформацію як потік даних, переспрямований у файл).

У PNG визначені чотири стандартні порції, що носять назву критичних порцій і повинні підтримуватися всіма програмами читання і запису формату PNG.

Порція заголовку (IHDR). Містить основну інформацію про дані зображення і повинна бути першою. У потоці даних PNG може існувати тільки одна порція заголовку.

Порція палітри (PLTE). Служить для збереження даних таблиці кольорів, пов'язаних з даними зображення. Ця порція присутня у файлі тільки тоді, коли дані зображення використовують колірну палітру, і розташовується перед порцією даних зображення.

Порція даних зображення (IDAT). Містить власне дані зображення. У потоці даних може бути кілька таких порцій, що записуються послідовно одна за іншою.

Завершувальна порція (IEND). Розташовуючись останньою, дана порція маркує закінчення PNG-файлу або потоку даних.

Стиснення даних. Дані PNG-зображень завжди зберігаються в стиснутому вигляді. Для стиснення використовується схема прогнозування піксельных значень із застосуванням одного з варіантів методу Deflate. Алгоритм Deflate (створений Філом Кацем) використовується в ужитку архівації файлів pkzip. Цей метод стиснення без втрат характерний високою швидкістю кодування/декодування, добре документований і поширюється безкоштовно; підтримується більшістю платформ і операційних систем.

Deflate є різновидом методу стиску LZW (запатентованого в 1981 р.). У Deflate використовується плаваюче вікно змінного розміру і сортовані хеш-таблиці, що дозволяють ідентифікувати комбінації даних і стискати їх за алгоритмом Хаффмана. У форматі PNG використовується різновид методу Deflate, у якому сортовані хеш-таблиці не використовуються, тому він не став суб'єктом патентних домагань або ліцензійних угод.

Перед стисненням дані зображення можна профільтрувати. Фільтрація нормалізує значення байтів у стрічці розгортки, що підвищує ефективність алгоритму стиску Deflate і дає змогу значно зменшити розмір даних.