Portable Pixmap (.ppm)
Netpbm СтандартPortable Pixmap Format (PPM) - це повнокольоровий стандарт RGB сімейства графіки Netpbm, що забезпечує найпростіше можливе нестиснене представлення цифрових зображень Truecolor.
Аналіз та метадані
Операційні системи та аналізатори файлів ідентифікують файли PPM, перевіряючи початкову послідовність бінарних байтів:
Сигнатура заголовка на байтовому рівні (Magic Bytes)
Операційні системи та аналізатори файлів ідентифікують файли PPM, перевіряючи початкову послідовність бінарних байтів:
ШІСТНАДЦЯТКОВА СИГНАТУРА (ЗСУВ 0):
50 33 / 50 36ASCII-УЯВЛЕННЯ: P3 / P6
Стандартизація: Netpbm Library Standard
Технічні характеристики
| Архітектура контейнера | ASCII (P3) або бінарний (P6) формат Netpbm з шириною, висотою, максимальним значенням кольору та потоком трійקות RGB |
| Стиснення | Нестиснені сирі бінарні байти або зручні для читання людиною текстові трійки ASCII |
| Порядок байтів (Endianness) | Big-Endian (для 48-бітних 16-бітних/канальних зразків у режимі P6) |
| Колірні простори | Лінійний RGB або стандартний sRGB |
| Канали та структура | 3 канали RGB (24-бітний або 48-бітний Truecolor) |
| Максимальні розміри | Практично необмежені (підтримує довільний 64-бітний простір координат) |
| Прозорість | Відсутня (стандартний PPM суворо непрозорий RGB) |
| Потокове та прогресивне завантаження | Послідовне потокове відтворення рядок за рядком |
Технічна матриця порівняння: PPM проти конкурентів
| Технічний атрибут | PPM (Поточний) | BMP | PNG | TIFF |
|---|---|---|---|---|
| Глибина кольору | 24-бітний / 48-бітний RGB Truecolor | Від 1-бітного до 32-бітного RGBA | 24-бітний / 48-бітний RGBA | Від 8-бітного до 64-бітного RGBA |
| Споріднений формат Netpbm | PPM (Переносна карта пікселів) | Формат не Netpbm | Формат W3C не Netpbm | Формат Adobe не Netpbm |
| Магічні байти | P3 (ASCII) / P6 (Бінарний) | BM (0x42 0x4D) | ‰PNG.... | II*\0 або MM\0* |
| Стиснення | Нестиснений | Нестиснений / RLE | Без втрат Deflate (менший на ~70%) | LZW / Deflate / Zip |
Типові режими пошкодження та посібник з відновлення в шістнадцятковому форматі
Зображення відображається з діагональним зміщенням колірних каналів.
Першопричина: Обрезаний байт у потоці трійок RGB, що призводить до зміщення наступних червоних, зелених і синіх байтів.
Відновлення: Перевирівняйте зміщення трійок RGB або виконайте конвертацію за допомогою конвертера Netpbm File2File.
Аналіз безпеки та векторів атак на парсери
Декодери PPM повинні захищатися від переповнення цілих чисел під час обчислення розмірів буфера трійки RGB (3 байти).
Відомі вектори атак
- Переповнення цілих чисел під час виділення буфера ширина * висота * 3.
- Надмірне читання буфера під час читання пошкоджених токенів ASCII у режимі P3.
- Відмова в обслуговуванні через оголошення надмірного виділення пам'яті.
Захисні найкращі практики: Застосовуйте суворі ліміти виділення пам'яті на основі фактичного розміру файлу перед декомпресією.
Історичне походження та віхи
Головні переваги та плюси
- Абсолютна архітектурна простота: не потребує бібліотек стиснення для читання, запису чи маніпуляцій.
- Режим ASCII (P3) дозволяє програмістам переглядати, копіювати та редагувати сирі значення кольорів RGB безпосередньо в текстовому редакторі.
- Стандартний проміжний формат, який використовується в університетських курсах комп'ютерної графіки та проєктах трасування променів.
Технічні обмеження та мінуси
- Величезні розміри файлів через відсутність стиснення (фотографія у форматі 4K займає приблизно 25 мегабайт).
- Неефективно для вебдистрибуції або передачі мережею.
- Відсутня підтримка прозорості альфа або вбудованих колірних профілів.
Цікаві технічні факти
- Майже кожен студент комп'ютерних наук, який пише програмний трасувальник променів, виводить свої перші рендери у форматі PPM.
- У форматі ASCII PPM ('P3') зображення є буквально текстовим файлом із числами: '255 0 0' для червоного, '0 255 0' для зеленого, '0 0 255' для синього.
- Набір Netpbm спочатку поширювався у випусках стрічок 4.3BSD Unix наприкінці 1980-х років.
Поширені технічні запитання
Чому на курсах з інформатики використовують PPM?
Тому що PPM не потребує сторонніх бібліотек чи складних алгоритмів стиснення, дозволяючи студентам вивчати принципи комп'ютерної графіки за допомогою чистої математики пікселів.
У чому різниця між P3 та P6 PPM?
P3 зберігає трійки RGB як звичайні текстові числа ASCII, тоді як P6 зберігає трійки RGB як сирі бінарні байти.
Як конвертувати файл PPM у JPG або PNG?
Ви можете конвертувати файли PPM у PNG або JPG безпосередньо у своєму браузері за допомогою File2File.app, при цьому жодні дані не залишають ваш пристрій.