PNG изображение (.png)
Препоръка СтандартPortable Network Graphics (PNG) е свободен растерен графичен файлов формат, който поддържа компресия без загуба на данни, индексирани цветове и променлива прозрачност чрез алфа канал.
Конвертиране от PNG към JPG
Безплатен конвертор от PNG към JPG в браузъра. Конвертирайте файлове незабавно на вашето устройство.
Компресирайте PNG онлайн
Поверително - файловете никога не напускат устройството ви
Проверка и метаданни
Операционните системи и файловите анализатори идентифицират PNG файлове чрез проверка на началната двоична байтова последователност:
Байтов подпис на заглавката (сигнатурни байтове)
Операционните системи и файловите анализатори идентифицират PNG файлове чрез проверка на началната двоична байтова последователност:
HEX ПОДПИС (ОФСЕТ 0):
89 50 4E 47 0D 0A 1A 0AASCII ПРЕДСТАВЯНЕ: .PNG....
Стандартизация: Препоръка на W3C (1996) / ISO/IEC 15948:2004
Технически спецификации
| Контейнерна архитектура | Двоичен контейнер, базиран на блокове (chunks) с 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 (Текущ) | WebP | AVIF | JPEG |
|---|---|---|---|---|
| Тип компресия | Строго без загуба (Deflate + 2D предсказващи филтри) | Със загуба (VP8) и без загуба (VP8L) | Със загуба (AV1 вътрешнокадрово) и без загуба | Строго със загуба (Дискретна косинусова трансформация) |
| Алфа прозрачност | Пълен 8-битов / 16-битов променлив алфа канал | Поддържа се 8-битов алфа канал | Поддържа се 8-битов / 10-битов / 12-битов алфа канал | Няма поддръжка на канал за прозрачност |
| Файлов размер (снимки) | Често е по-голям от файловете в компресирани формати със загуби при фотографски изображения; относителният размер зависи от изображението и кодера. | Може да е по-малък от JPEG; резултатът зависи от изображението и кодера. | Може да е по-малък от JPEG; резултатът зависи от изображението и кодера. | Среден базов размер |
| Файлов размер (графика/UI) | Изключително компактен за екранни снимки, линейни графики и текст | Отличен режим без загуба | Добър, но по-бавен за кодиране | Лош (създава ореоли около остри ръбове) |
| Съвместимост с браузъри | Поддържа се от основните браузъри; наличността зависи от браузъра и версията. | Широка поддръжка в много от актуалните браузъри; обхватът зависи от версията и платформата. | Поддържа се от много от актуалните браузъри; обхватът зависи от версията и платформата. | Широка поддръжка; наличността зависи от продукта и версията. |
Често срещани видове повреди и ръководство за възстановяване на шестнадесетични данни
Програмата за преглед показва „Фатална грешка: Невалиден PNG файл“ или не успява да го отвори.
Първопричина: Първите 8 байта са променени от режим на ASCII пренос (преобразуване на 0x0D 0x0A в 0x0A или 0x0D 0x0D 0x0A).
Възстановяване: Отворете файла в шестнадесетичен редактор и проверете дали първите 8 байта съвпадат с „89 50 4E 47 0D 0A 1A 0A“. Възстановяването на тези точни 8 байта на заглавката често възстановява изображението.
Инструментът pngcheck докладва „Грешка в CRC сумата в блок IDAT“ или изображението се зарежда частично с повредени долни сканиращи редове.
Първопричина: Повреда на битове в компресирания поток данни на zlib или невалидна CRC32 сума в IDAT блок.
Възстановяване: Използвайте pngcheck -f или програми за възстановяване на Deflate потоци, за да преизчислите валидни CRC32 стойности, или декомпресирайте оцелелите сканиращи редове до повредения блок.
Изображението се визуализира перфектно в настолни програми за преглед, но дава грешка в приложения за iOS.
Първопричина: iOS очаква проприетарния формат със разменени байтове CgBI на Apple или нестандартни цветови пространства в блоковете.
Възстановяване: Нормализирайте изображението с помощта на командата „pngcrush -revert-iphone-optimizations", за да възстановите стандартната W3C RGBA подредба.
Анализ на сигурността и вектори на атака към парсера
PNG се поддържа от много операционни системи и приложения. Рисковете за сигурността включват изчерпване на паметта на декодера и злонамерени допълнителни блокове.
Известни вектори на атака
- Прекалено големи tEXt и zTXt метаданни блокове, предизвикващи отказ от услуга поради изчерпване на паметта (OOM) в декодери без изолирана среда.
- Уязвимости тип препълване на буфера в динамичната памет (heap buffer overflow) в остарели версии на libpng (напр. CVE-2015-8126 в png_set_PLTE).
- Атаки с декомпресионно заливане с пиксели, при които изображение с малък файлов размер декларира огромни размери (напр. 100 000 x 100 000 пиксела).
- Стеганографско скриване на криптирани полезни товари в помощни частни блокове (напр. eXIf или потребителски типове блокове).
Най-добри практики за защита: Винаги валидирайте размерите на изображението, преди да заделите буфери за пикселите в паметта. Изчиствайте несъществените помощни блокове (eXIf, tEXt) при качване от потребители, като използвате безопасен за паметта санитайзър.
Исторически произход и етапи
Основни предимства
- PNG използва компресия без загуби, така че кодирането на непроменено изображение не добавя загуби от компресията; редактирането или преобразуването на цветовете обаче може да промени стойностите на пикселите.
- Гладката 8-битова алфа прозрачност позволява чисто сливане върху сложни фонове.
- Блоковете за гама корекция и цветност осигуряват последователно изобразяване на различни монитори.
Технически ограничения и минуси
- Значително по-големи файлови размери в сравнение с модерни формати със загуба като WebP или AVIF при фотографско съдържание.
- Липса на вградена многокадрова анимация в стандартния PNG (изисква разширението APNG).
- Високата дълбочина на цветовете (16 бита на канал) създава огромни декомпресирани буфери в паметта.
Интересни технически факти
- 8-байтовата сигнатура е проектирана така, че да открива повреда от преобразуване на окончанията на редовете CR/LF при прехвърляне по FTP.
- Неофициалното обратно разчитане на съкращението PNG е „PNG не е GIF“ (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 растерни изображения в JPEG формат намалява размера на файла чрез прилагане на компресия със загуба, което прави изображенията по-бързи за зареждане в уеб сайтове и заема по-малко място за съхранение.
Конвертирането на растерно JPEG изображение със загуба на данни в запазващ качеството PNG формат предотвратява последващо влошаване на детайлите и добавя поддръжка на прозрачност чрез алфа канал.
Конвертирането на PNG в WebP може да намали размера на файла и същевременно да запази прозрачността; резултатът зависи от избрания режим на кодиране - със или без загуба - и от съдържанието на изображението.
Конвертирането на WebP в PNG създава неподвижно изображение за програми, които поддържат PNG; анимацията на WebP не се запазва, а загубените детайли от източника не могат да бъдат възстановени.
Конвертирането на HEIC в PNG преобразува снимки, компресирани с HEVC със загуба на данни в широко поддържани графични файлове без загуба на данни.
Конвертирането на SVG векторни файлове в PNG растерни изображения преобразува мащабируеми графики, базирани на код, във фиксирани пикселни мрежи за универсална съвместимост с приложенията.
Капсулирайте съдържанието на растерни PNG изображения в SVG XML векторен контейнер за гъвкаво уеб мащабиране и интегриране във векторно-съвместими оформления.
Конвертирайте графики във формат PSD на Adobe Photoshop в PNG изображения с пълна прозрачност на алфа канала директно във вашия браузър, без данните да се изпращат към сървър.