Portable Pixmap (.ppm)
Netpbm СтандартPortable Pixmap Format (PPM): це повнокольоровий стандарт RGB сімейства графіки Netpbm, що забезпечує найпростіше можливе нестиснене представлення цифрових зображень Truecolor.
Аналіз та метадані
Операційні системи та аналізатори файлів ідентифікують файли PPM, перевіряючи початкову послідовність бінарних байтів:
Сигнатура заголовка на байтовому рівні (Magic Bytes)
Операційні системи та аналізатори файлів ідентифікують файли PPM, перевіряючи початкову послідовність бінарних байтів:
ШІСТНАДЦЯТКОВА СИГНАТУРА (ЗСУВ 0):
50 33 / 50 36ПОДАННЯ В ASCII: 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.app.
Аналіз безпеки та векторів атак на парсери
Декодери PPM мають захищатися від переповнення цілого числа під час обчислення розміру буфера для трійок RGB (3 байти).
Відомі вектори атак
- Переповнення цілих чисел під час виділення буфера ширина * висота * 3.
- Читання за межами буфера під час читання пошкоджених ASCII-токенів у режимі P3.
- Відмова в обслуговуванні через оголошення надмірного виділення пам'яті.
Рекомендації щодо захисту: Застосовуйте суворі ліміти виділення пам'яті на основі фактичного розміру файлу перед декодуванням.
Історичне походження та віхи
Основні переваги
- Заголовок і зразки пікселів PPM легко записати з графічної програми. Використовуйте бібліотеку, якщо потрібно аналізувати ASCII- й двійковий варіанти або безпечно обробляти некоректні файли.
- Режим ASCII (P3) дозволяє програмістам переглядати, копіювати та редагувати сирі значення кольорів RGB безпосередньо в текстовому редакторі.
- PPM використовують як простий проміжний формат або формат виведення в деяких курсах комп’ютерної графіки та прикладах трасувальників променів.
Технічні обмеження та недоліки
- Нестиснені 8-бітні зображення P6 можуть бути великими; зображення RGB 3840 × 2160 потребує близько 24,9 мільйона байтів даних пікселів без заголовка.
- Неефективно для вебдистрибуції або передачі мережею.
- Відсутня підтримка прозорості альфа або вбудованих колірних профілів.
Цікаві технічні факти
- У деяких вступних прикладах трасувальників променів використовують PPM для виведення, оскільки дані пікселів легко записувати.
- У форматі ASCII PPM ('P3') зображення є буквально текстовим файлом із числами: '255 0 0' для червоного, '0 255 0' для зеленого, '0 0 255' для синього.
- Набір Netpbm спочатку поширювався у релізах 4.3BSD Unix на магнітних стрічках наприкінці 1980-х років.
Поширені технічні запитання
Чому на курсах з інформатики використовують PPM?
PPM зберігає зразки пікселів RGB із коротким заголовком, тому трасувальник променів може записати зображення без складного кодека. Програми все одно мають обробляти текстовий варіант P3, двійковий P6 і правила глибини зразків.
У чому різниця між P3 та P6 PPM?
P3 зберігає трійки RGB як звичайні текстові числа ASCII, тоді як P6 зберігає трійки RGB як сирі бінарні байти.
Як конвертувати файл PPM у JPG або PNG?
Ви можете конвертувати файли PPM у PNG або JPG безпосередньо у своєму браузері за допомогою File2File.app, при цьому жодні дані не залишають ваш пристрій.