Portable Pixmap (.ppm)

Стандарт Стандарт

Portable Pixmap Format (PPM) е пълноцветният RGB формат от графичното семейство Netpbm, който осигурява възможно най-просто некомпресирано представяне на цифрови изображения в истински цветове.

Проверка и метаданни

Операционните системи и файловите анализатори идентифицират PPM файлове чрез проверка на началната двоична байтова последователност:

Изберете или пуснете файлове тук

Поверително - файловете никога не напускат устройството ви

или поставете Ctrl+V
Гаранция за поверителност с нулево мрежово предаване: 0 байта са качени на външни сървъри. Цялата обработка се извършва локално в пясъчниците на вашия браузър.

Байтов подпис на заглавката (сигнатурни байтове)

Операционните системи и файловите анализатори идентифицират PPM файлове чрез проверка на началната двоична байтова последователност:

HEX ПОДПИС (ОФСЕТ 0):

50 33 / 50 36

ASCII ПРЕДСТАВЯНЕ: 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 (Текущ)BMPPNGTIFF
Цветова дълбочина24-битов / 48-битов RGB с пълноцветно представяне1-битов до 32-битов RGBA24-битов / 48-битов RGBA8-битов до 64-битов RGBA
Сроден формат от NetpbmPPM (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.
  • Отказ от услуга заради заявки за прекомерно заделяне на памет.

Най-добри практики за защита: Преди декодиране налагайте строги ограничения за заделянето на памет според физическия размер на файла.

Исторически произход и етапи

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

Основни предимства

  • Заглавната част и пробите на пикселите в 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, без никакви данни да напускат вашето устройство.