Portable Pixmap (.ppm)

Netpbm Стандарт

Portable Pixmap Format (PPM): це повнокольоровий стандарт RGB сімейства графіки Netpbm, що забезпечує найпростіше можливе нестиснене представлення цифрових зображень Truecolor.

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

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

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

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

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

Сигнатура заголовка на байтовому рівні (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 (Поточний)BMPPNGTIFF
Глибина кольору24-бітний / 48-бітний RGB TruecolorВід 1-бітного до 32-бітного RGBA24-бітний / 48-бітний RGBAВід 8-бітного до 64-бітного RGBA
Споріднений формат NetpbmPPM (Переносна карта пікселів)Формат не 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.
  • Відмова в обслуговуванні через оголошення надмірного виділення пам'яті.

Рекомендації щодо захисту: Застосовуйте суворі ліміти виділення пам'яті на основі фактичного розміру файлу перед декодуванням.

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

2000До специфікації Netpbm P6 додано 48-бітну глибину кольору (16 біт на канал).
1993Стає універсальною мовою спілкування для конвеєрів конвертації графіки Unix у наборі інструментів Netpbm.
1989Джеф Посканзер завершує тріумвірат Netpbm (PBM, PGM, PPM) повнокольоровим форматом PPM.

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

  • Заголовок і зразки пікселів 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, при цьому жодні дані не залишають ваш пристрій.