Зображення PNG (.png)

Рекомендація Стандарт

Portable Network Graphics (PNG): це растровий формат зображень без патентних обмежень, який підтримує стиснення без втрат, індексовані кольори й альфа-канал зі змінним рівнем прозорості.

Конвертувати з PNG у JPG

Безкоштовний конвертер з PNG у JPG у браузері. Миттєво конвертуйте файли на своєму пристрої.

Стиснути PNG онлайн

Приватно - файли ніколи не залишають ваш пристрій

Аналіз та метадані

Операційні системи та аналізатори файлів ідентифікують файли PNG, перевіряючи початкову послідовність бінарних байтів:

Виберіть або перетягніть файли сюди

Приватно - файли ніколи не залишають ваш пристрій

або вставте Ctrl+V
Гарантія конфіденційності без передавання даних мережею: Жодного байта не передано на зовнішні сервери. Уся обробка відбувалася локально в ізольованому середовищі браузера.

Сигнатура заголовка на байтовому рівні (Magic Bytes)

Операційні системи та аналізатори файлів ідентифікують файли PNG, перевіряючи початкову послідовність бінарних байтів:

ШІСТНАДЦЯТКОВА СИГНАТУРА (ЗСУВ 0):

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

ПОДАННЯ В ASCII: .PNG....

Стандартизація: Рекомендація W3C (1996) / ISO/IEC 15948:2004

Технічні характеристики

Архітектура контейнераДвійковий контейнер на основі блоків; кожен блок має 4-байтову контрольну суму CRC32.
СтисненняDeflate (LZ77 + кодування Хаффмана) із 5 предиктивними фільтрами рядків (None, Sub, Up, Average, Paeth)
Порядок байтів (Endianness)Порядок байтів від старшого до молодшого (Big-Endian) для довжин блоків, розмірів і контрольних сум CRC
Колірні просториsRGB, Display P3, Індексована палітра (1-8 біт), Відтінки сірого, Повноколірний режим (24/48 біт)
Канали та структураRGB + Альфа (до 16 біт на канал / 64-бітний RGBA)
Максимальні розміри2,147,483,647 x 2,147,483,647 пікселів (4-байтові беззнакові цілі числа)
ПрозорістьЗмінний канал прозорості альфа з глибиною 8 або 16 біт
Потокове та прогресивне завантаженняАлгоритм чергування Adam7 із 7 проходами забезпечує поступове відображення двовимірного зображення по рядках сканування.

Технічна матриця порівняння: PNG проти конкурентів

Технічний атрибутPNG (Поточний)WebPAVIFJPEG
Тип стисненняПовністю без втрат (Deflate + 2D предиктивні фільтри)З втратами (VP8) та без втрат (VP8L)З втратами (AV1 intra) та без втратЛише зі втратами (дискретне косинусне перетворення)
Альфа-прозорістьПовний 8-бітний / 16-бітний змінний альфа-каналПідтримується 8-бітний альфа-каналПідтримується 8-бітний / 10-бітний / 12-бітний альфа-каналПідтримка каналу прозорості відсутня
Розмір файлу (фотографії)Для фотографій часто більший за формати зі втратами; відносний розмір залежить від зображення й кодера.Може бути меншим за JPEG; результат залежить від зображення та кодера.Може бути меншим за JPEG; результат залежить від зображення та кодера.Середній базовий рівень
Розмір файлу (графіка/UI)Вкрай компактний для знімків екрана, лінійної графіки та текстуЧудовий режим без втратХороший, але кодування повільнішеНизька якість (створює ореоли вздовж різких меж)
Сумісність з браузерами100% універсальна у всіх браузерах з 1998 року97%+ підтримка сучасними браузерами93%+ підтримка сучасними браузерами100% універсальна

Типові режими пошкодження та посібник з відновлення в шістнадцятковому форматі

Переглядач зображень виводить повідомлення «Fatal error: Not a valid PNG file» або не може відкрити файл.

Першопричина: Перші 8 байтів були змінені режимом передачі ASCII (перетворення 0x0D 0x0A на 0x0A або 0x0D 0x0D 0x0A).

Відновлення: Відкрийте файл у шістнадцятковому редакторі та перевірте, чи відповідають перші 8 байтів послідовності «89 50 4E 47 0D 0A 1A 0A». Відновлення цих точних 8 байтів заголовка часто дає змогу відновити зображення.

Утиліта pngcheck повідомляє «CRC error in chunk IDAT» або зображення завантажується частково, з пошкодженими нижніми рядками.

Першопричина: Пошкодження бітів у стисненому потоці даних zlib або недійсна контрольна сума CRC32 у блоці IDAT.

Відновлення: Використовуйте pngcheck -f або утиліти відновлення потоку Deflate, щоб повторно обчислити правильні значення CRC32 або розпакувати вцілілі рядки до пошкодженого блоку.

Зображення без проблем відображається в програмах для настільних комп’ютерів, але не відображається в програмах для iOS.

Першопричина: iOS очікує формат із переставленими байтами CgBI від Apple або нестандартні блоки колірного простору.

Відновлення: Нормалізуйте зображення за допомогою команди 'pngcrush -revert-iphone-optimizations', щоб відновити стандартний порядок RGBA від W3C.

Аналіз безпеки та векторів атак на парсери

PNG підтримується багатьма операційними системами та програмами. До загроз безпеці належать вичерпання пам’яті декодера та зловмисні допоміжні блоки.

Відомі вектори атак

  • Завеликі блоки метаданих tEXt і zTXt, що викликають відмову в обслуговуванні через вичерпання пам'яті (OOM) у декомпресорах без пісочниці.
  • Вразливості переповнення буфера купи в застарілих версіях libpng (наприклад, CVE-2015-8126 у png_set_PLTE).
  • Атаки декомпресії шляхом піксельної повені (pixel flood), коли зображення з маленьким розміром файлу заявляє величезні розміри (наприклад, 100 000 x 100 000 пікселів).
  • Стеганографічна ексфільтрація із приховуванням зашифрованих корисних навантажень у допоміжних приватних блоках (наприклад, eXIf або користувацькі типи блоків).

Рекомендації щодо захисту: Завжди перевіряйте розміри зображення перед виділенням буферів пікселів у пам’яті. Під час завантаження користувачами видаляйте несуттєві допоміжні блоки (eXIf, tEXt) за допомогою засобу очищення, безпечного для пам’яті.

Історичне походження та віхи

2004Стандартизовано на міжнародному рівні як ISO/IEC 15948.
1996PNG 1.0 опубліковано як рекомендацію W3C.
1995Створено в телеконференції Usenet comp.graphics як відкриту заміну GIF після запровадження патентних зборів Unisys за алгоритм LZW.

Основні переваги

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

Технічні обмеження та недоліки

  • Значно більший розмір файлів порівняно з сучасними форматами з втратами, такими як WebP або AVIF, для фотографічного контенту.
  • Відсутність вбудованої підтримки багатокадрової анімації у стандартному PNG (потрібне розширення APNG).
  • Висока глибина кольору (16 біт на канал) створює величезні нестиснені буфери декодування в пам'яті.

Цікаві технічні факти

  • 8-байтний магічний заголовок був спеціально розроблений для виявлення пошкоджень закінчень рядків CR/LF під час FTP-передач.
  • Неофіційна рекурсивна розшифровка PNG: «PNG’s Not GIF».
  • Apple використовує власний блок CgBI у PNG-файлах застосунків iOS. Він переставляє канали RGBA у формат BGRA для безпосереднього відображення зображення на GPU.

Поширені технічні запитання

Чому розмір файлу PNG іноді збільшується після збереження в редакторах зображень?

Різні програмні пакети використовують різні рівні стиснення Deflate та евристику предиктивних фільтрів рядків. Програми на кшталт Photoshop часто додають нестиснені колірні профілі, блоки метаданих XMP та неоптимальні розміри блоків IDAT. Спеціалізовані інструменти, такі як File2File.app Compressor, повторно оцінюють усі 5 фільтрів рядків для досягнення мінімального розміру файлу.

У чому різниця між PNG-8 та PNG-24?

PNG-8 використовує індексовану колірну палітру до 256 кольорів (подібно до GIF), завдяки чому файли дуже малі й придатні для простих іконок. PNG-24 підтримує 16,7 мільйона кольорів (повноколірне зображення, 8 біт на канал), а PNG-32 додає 8-бітний канал альфа-прозорості.

Чому PNG має 5 предиктивних фільтрів рядків?

Deflate стискає повторювані послідовності байтів. Оскільки значення пікселів на фотографіях або градієнтах змінюються поступово, PNG фільтрує кожен рядок (None, Sub, Up, Average, Paeth), обчислюючи різниці між сусідніми пікселями. Так дані градієнта перетворюються на послідовності байтів, значення яких близькі до нуля та які значно краще стискаються за допомогою Deflate.

Чи підтримує PNG колірний простір CMYK для комерційного друку?

Ні. Офіційна специфікація W3C PNG навмисно обмежує типи кольорів градаціями сірого (Grayscale), індексованими (Indexed) та RGB. Професійні робочі процеси друку, що вимагають CMYK, повинні використовувати контейнери TIFF або PDF.

Пов'язані пари конвертації PNG

PNG до JPG

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

JPG до PNG

Конвертування растрового зображення JPEG із втратами у растрове зображення PNG без втрат запобігає подальшому погіршенню якості під час повторного збереження та додає підтримку прозорості альфа-каналу.

PNG до WEBP

Перетворення PNG на WebP може зменшити розмір файлу зі збереженням прозорості; результат залежить від стиснення з втратами чи без них і вмісту зображення.

WEBP до PNG

Перетворення WebP на PNG створює нерухоме зображення для програм із підтримкою PNG; анімація WebP не зберігається, а втрачені деталі джерела зі стисненням із втратами не відновлюються.

HEIC до PNG

Конвертація HEIC у PNG перетворює фотографії зі стисненням HEVC (з втратами) у широко підтримувані графічні файли без втрат.

SVG до PNG

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

PNG до SVG

Вбудуйте растрові зображення PNG у векторний контейнер SVG з XML-розміткою для адаптивного масштабування на вебсторінках і роботи з векторними макетами.

PSD до PNG

Конвертуйте графіку Adobe Photoshop PSD у файли PNG без втрати якості зі збереженням повної прозорості альфа-каналу - безпосередньо у браузері, без передавання даних на сервер.