Изображение PNG (.png)
Рекомендация СтандартPortable Network Graphics (PNG): растровый формат файлов без патентных ограничений, поддерживающий сжатие данных без потерь, индексированные цвета и альфа-канал с переменной прозрачностью.
Конвертировать из PNG в JPG
Бесплатный конвертер из PNG в JPG прямо в браузере. Конвертируйте файлы мгновенно на Вашем устройстве.
Сжатие PNG онлайн
Конфиденциально - файлы никогда не покидают ваше устройство
Анализ и метаданные
Операционные системы и анализаторы файлов идентифицируют файлы PNG по начальной двоичной последовательности байтов:
Сигнатура заголовка на уровне байтов (Magic Bytes)
Операционные системы и анализаторы файлов идентифицируют файлы PNG по начальной двоичной последовательности байтов:
HEX-СИГНАТУРА (СМЕЩЕНИЕ 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 (Текущий) | WebP | AVIF | JPEG |
|---|---|---|---|---|
| Тип сжатия | Строго без потерь (Deflate + 2D предиктивные фильтры) | С потерями (VP8) и без потерь (VP8L) | С потерями (AV1 intra) и без потерь | Только с потерями (дискретное косинусное преобразование) |
| Альфа-прозрачность | Полный альфа-канал с глубиной 8 или 16 бит | Поддерживается 8-битный альфа-канал | Поддерживаются 8-, 10- и 12-битные альфа-каналы | Поддержка канала прозрачности отсутствует |
| Размер файла (фотографий) | Большой (обычно в 3: 6 раз больше, чем у форматов с потерями) | Небольшой (на 25%-35% меньше, чем JPEG) | Очень небольшой (на 40%-55% меньше, чем JPEG) | Средний (базовый уровень) |
| Размер файла (графика/интерфейсы) | Очень компактный формат для снимков экрана, штриховой графики и текста | Отличный режим без потерь | Хороший, но кодируется медленнее | Плохой (создает артефакты звона вдоль резких границ) |
| Совместимость с браузерами | 100% универсальная поддержка во всех браузерах с 1998 года | Поддержка более чем в 97% современных браузеров | Поддержка в 93%+ современных браузеров | 100% универсальная |
Распространенные сценарии повреждения и руководство по восстановлению в HEX
Просмотрщик изображений выдает ошибку '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', чтобы восстановить стандартный порядок W3C RGBA.
Анализ безопасности и векторы атак на парсер
PNG поддерживается многими операционными системами и приложениями. К угрозам безопасности относятся исчерпание памяти декодера и вредоносные вспомогательные блоки.
Известные векторы атак
- Слишком большие блоки метаданных tEXt и zTXt, вызывающие отказ в обслуживании (DoS) из-за исчерпания памяти (OOM) в декодерах без песочницы.
- Уязвимости переполнения буфера кучи в устаревших версиях libpng (например, CVE-2015-8126 в png_set_PLTE).
- Атаки с распаковкой изображений, заявляющих огромное число пикселей при небольшом размере файла (например, 100 000 × 100 000 пикселей).
- Стеганографическая эксфильтрация данных с сокрытием зашифрованных полезных нагрузок во вспомогательных частных чанках (например, eXIf или пользовательских типах чанков).
Лучшие практики защиты: Всегда проверяйте размеры изображения до выделения буферов пикселей в памяти. При загрузке удаляйте необязательные вспомогательные блоки (eXIf, tEXt) с помощью инструмента безопасной очистки данных.
История происхождения и ключевые этапы
Ключевые преимущества и плюсы
- PNG использует сжатие без потерь, поэтому кодирование неизменённого изображения не приводит к потерям из-за сжатия; редактирование или преобразование цветов всё же может изменить значения пикселей.
- Плавная альфа-прозрачность с глубиной 8 бит обеспечивает аккуратное наложение на сложные фоны.
- Блоки гамма-коррекции и цветности обеспечивают единообразный рендеринг на различных мониторах.
Технические ограничения и минусы
- Значительно больший размер файлов по сравнению с современными форматами с потерями, такими как WebP или AVIF, для фотографического контента.
- Отсутствие нативной многокадровой анимации в стандартном PNG (требуется расширение APNG).
- Высокая глубина цвета (16 бит на канал) требует больших несжатых буферов декодированных данных в памяти.
Интересные технические факты
- 8-байтовая сигнатура PNG была специально разработана для обнаружения повреждения окончаний строк 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 миллиона цветов (Truecolor, 8 бит на канал), а в PNG-32 добавляется 8-битный альфа-канал прозрачности.
Почему в PNG предусмотрено 5 предиктивных фильтров строк развертки?
Алгоритм Deflate сжимает повторяющиеся шаблоны байтов. Поскольку значения пикселей на фотографиях или градиентах изменяются постепенно, PNG фильтрует каждую строку развертки (None, Sub, Up, Average, Paeth), вычисляя разницу между соседними пикселями. Это превращает данные градиента в последовательности байтов, близких к нулю, которые сжимаются с помощью Deflate значительно эффективнее.
Поддерживает ли PNG цветовое пространство CMYK для коммерческой печати?
Нет. Официальная спецификация W3C PNG намеренно ограничивает цветовые типы оттенками серого, индексированными цветами и RGB. Профессиональные рабочие процессы печати, требующие CMYK, должны использовать контейнеры TIFF или PDF.
Связанные конвертации для PNG
Конвертация растровых изображений PNG в формат JPEG уменьшает размер файла за счет применения сжатия с потерями, что ускоряет загрузку изображений на сайтах и экономит место на диске.
Конвертация растрового изображения JPEG с потерями в растровое изображение PNG без потерь предотвращает дальнейшее ухудшение качества и добавляет поддержку прозрачности альфа-канала.
Преобразование PNG в WebP может уменьшить размер файла с сохранением прозрачности; результат зависит от сжатия с потерями или без них и от содержимого изображения.
Преобразование WebP в PNG создает статичное изображение для программ с поддержкой PNG; анимация WebP не сохраняется, а утраченные при сжатии исходные детали восстановить нельзя.
Конвертация HEIC в PNG преобразует фотографии со сжатием HEVC с потерями в широко поддерживаемые графические файлы без потерь.
Конвертация векторных файлов SVG в растровые изображения PNG преобразует масштабируемую графику на основе кода в сетку с фиксированными пикселями для универсальной совместимости с приложениями.
Инкапсуляция растровых изображений PNG в векторный контейнер SVG XML для адаптивного масштабирования в Интернете и интеграции в векторные макеты.
Конвертируйте графику Adobe Photoshop PSD в изображения PNG без потерь с поддержкой полной прозрачности альфа-канала прямо в Вашем браузере без передачи данных на сервер.