Portable Pixmap (.ppm)
Стандарт СтандартPortable Pixmap Format (PPM) е пълноцветният RGB формат от графичното семейство Netpbm, който осигурява възможно най-просто некомпресирано представяне на цифрови изображения в истински цветове.
Проверка и метаданни
Операционните системи и файловите анализатори идентифицират PPM файлове чрез проверка на началната двоична байтова последователност:
Байтов подпис на заглавката (сигнатурни байтове)
Операционните системи и файловите анализатори идентифицират PPM файлове чрез проверка на началната двоична байтова последователност:
HEX ПОДПИС (ОФСЕТ 0):
50 33 / 50 36ASCII ПРЕДСТАВЯНЕ: P3 / P6
Стандартизация: Стандарт на библиотеката Netpbm
Технически спецификации
| Контейнерна архитектура | ASCII (P3) или двоичен (P6) формат Netpbm с ширина, височина, максимална стойност на цвета и поток от RGB тройки |
| Компресия | Некомпресирани сурови двоични байтове или четими за хората RGB тройки в ASCII текст |
| Поредност на байтовете (Endianness) | Ред от старшия към младшия байт (Big-Endian) за 48-битовите проби с 16 бита на канал в режим P6. |
| Цветови пространства | Линеен RGB или стандартен sRGB |
| Канали и структура | 3 RGB канала (24-битов или 48-битов пълноцветен режим) |
| Максимални размери | Практически неограничени (поддържат координати с произволен 64-битов обхват) |
| Прозрачност | Няма (стандартният PPM е изцяло непрозрачен RGB формат) |
| Поточно предаване и прогресивно зареждане | Последователно поточно възпроизвеждане ред по ред |
Техническа сравнителна матрица: PPM спрямо конкуренти
| Технически атрибут | PPM (Текущ) | BMP | PNG | TIFF |
|---|---|---|---|---|
| Цветова дълбочина | 24-битов / 48-битов RGB с пълноцветно представяне | 1-битов до 32-битов RGBA | 24-битов / 48-битов RGBA | 8-битов до 64-битов RGBA |
| Сроден формат от Netpbm | PPM (Portable Pixmap) | Формат извън Netpbm | Формат на W3C извън Netpbm | Формат на Adobe извън Netpbm |
| Магически байтове | P3 (ASCII) / P6 (двоичен) | BM (0x42 0x4D) | ‰PNG.... | II*\0 или MM\0* |
| Компресия | Без компресиране | Некомпресирано / RLE | Компресия Deflate без загуби; спестяването на място зависи от съдържанието на изображението | LZW / Deflate / Zip |
Често срещани видове повреди и ръководство за възстановяване на шестнадесетични данни
Изображението се показва с диагонално изместване на цветовите канали.
Първопричина: Прекъснат байт в потока от RGB тройки, който води до разместване на следващите червен, зелен и син байт.
Възстановяване: Подравнете отново отместванията на RGB тройките или конвертирайте файла с File2File.app Netpbm Converter.
Анализ на сигурността и вектори на атака към парсера
Декодерите на PPM трябва да предотвратяват целочислено препълване при изчисляване на размера на буферите за RGB тройки от по 3 байта.
Известни вектори на атака
- Целочислено препълване при заделяне на буфер с размер width * height * 3.
- Четене извън буфера при обработка на неправилни ASCII токени в режим P3.
- Отказ от услуга заради заявки за прекомерно заделяне на памет.
Най-добри практики за защита: Преди декодиране налагайте строги ограничения за заделянето на памет според физическия размер на файла.
Исторически произход и етапи
Основни предимства
- Заглавната част и пробите на пикселите в PPM са лесни за записване от графична програма. Използвайте библиотека, когато трябва да обработвате и двата варианта - ASCII и двоичния, или да защитите обработката от неправилни файлове.
- ASCII режимът (P3) позволява на програмистите да преглеждат, копират и редактират RGB стойностите на пикселите директно в текстов редактор.
- PPM се използва като прост междинен или изходен формат в някои курсове по компютърна графика и примери за програми за проследяване на лъчи.
Технически ограничения и минуси
- Некомпресираните 8-битови изображения P6 може да са големи; RGB изображение с размер 3840 x 2160 използва около 24,9 милиона байта за пикселните данни, без заглавната част.
- Неефективен за уеб разпространение или мрежов пренос.
- Липса на поддръжка за алфа прозрачност или вградени цветови профили.
Интересни технически факти
- В някои примери за начинаещи, които създават програма за проследяване на лъчи, изходният формат е PPM, защото записът на пикселните данни е лесен.
- В ASCII PPM ('P3') едно изображение е буквално текстов файл с числа: '255 0 0' за червено, '0 255 0' за зелено, '0 0 255' за синьо.
- Пакетът Netpbm първоначално е разпространен на лентовите релийзи на 4.3BSD Unix в края на 80-те години на миналия век.
Често задавани технически въпроси
Защо курсовете по компютърни науки използват PPM?
PPM съхранява RGB пробите на пикселите с кратка заглавна част, така че програмата за проследяване на лъчи може да запише изображение без сложен кодек. Приложенията все пак трябва да обработват текстовия вариант P3 и двоичния P6, както и правилата за дълбочината на пробите.
Каква е разликата между P3 и P6 PPM?
P3 съхранява RGB триплети като обикновени ASCII текстови числа, докато P6 съхранява RGB триплети като сурови двоични байтове.
Как мога да конвертирам PPM файл в JPG или PNG?
Можете да конвертирате PPM файлове в PNG или JPG директно в браузъра си с помощта на File2File.app, без никакви данни да напускат вашето устройство.