Основы форматов

Что такое PPM: формат, который можно открыть в Блокноте

Большинство форматов картинок — это запертый сундук: внутри байты, которые расшифрует только специальная программа. PPM устроен наоборот. Это, пожалуй, самый честный и простой формат изображения в мире: его заголовок можно прочитать глазами, а саму картинку — собрать вручную. Разбираемся, как такое возможно и почему этот «динозавр» из 1980-х до сих пор жив.

Цветной программный код на экране — PPM это формат, который можно прочитать как текст
PPM настолько прост, что его заголовок читается как обычный текст. Фото: Pexels

Что такое PPM простыми словами

PPM (Portable Pixmap) — это цветной растровый формат изображения из семейства Netpbm. «Растровый» значит, что картинка собрана из пикселей, как мозаика. А ключевое слово здесь — portable, «переносимый»: формат специально придуман так, чтобы файл без проблем путешествовал между любыми компьютерами и операционными системами.

Главная особенность PPM — его обезоруживающая простота. Внутри нет ни сжатия, ни хитрых структур, ни специальных проверок — только заголовок и сами пиксели. Файл состоит из двух частей: короткого текстового заголовка, где написаны размеры картинки, и данных пикселей — просто перечисления, какого цвета каждая точка. Всё. Если PNG и JPG — это упакованные чемоданы, то PPM — это вещи, разложенные на столе по порядку.

Коротко

PPM — самый прямолинейный способ хранить цветную картинку: заголовок плюс значения красного, зелёного и синего для каждого пикселя. Просто читать, просто писать — но никакой экономии места.

Откуда взялся формат и зачем

История PPM начинается с очень житейской проблемы. В середине 1980-х программист Джеф Поскансер (Jef Poskanzer) хотел пересылать картинки по электронной почте. Беда в том, что почта тех лет надёжно передавала только обычный текст — буквы и цифры, а всё остальное (так называемые «двоичные» данные, понятные лишь компьютеру) по дороге портилось. Изображение приходило битым.

Решение оказалось гениально простым: а давайте опишем картинку обычными текстовыми символами, которые почта точно не испортит. Так родился формат PBM (для чёрно-белых картинок). К концу 1988 года Поскансер добавил к нему PGM (оттенки серого) и PPM (полный цвет) и выпустил их в составе набора утилит Pbmplus. Позже, в 1993 году, на смену пришла библиотека Netpbm, которая жива и развивается до сих пор.

То есть PPM изначально создавался не ради качества или размера, а ради надёжности и простоты. И эта философия — «понятный формат, который прочитает кто угодно» — сделала его бессмертным в мире программирования.

Структура проекта и код на экране — PPM создавался как формат для программистов
Формат придумали программисты для программистов: главное — чтобы файл легко читался и писался. Фото: Pexels

Как устроен файл PPM внутри

Любой PPM начинается с «магического числа» — двух символов, которые сообщают программе, что именно перед ней. Для PPM это P3 или P6. Дальше идёт остальной заголовок, и порядок всегда один и тот же:

Полное имя
Portable Pixmap
Расширение
.ppm
Семейство
Netpbm
Магическое число
P3 (текст) / P6 (бинарь)
Сжатие
Нет
Прозрачность
Нет

Заголовок состоит из четырёх вещей, разделённых пробелами или переносами строки:

  • Магическое числоP3 или P6.
  • Ширина картинки в пикселях.
  • Высота картинки в пикселях.
  • Maxval — максимальное значение цвета (обычно 255). Оно говорит, что «255» — это полная яркость канала.

Сразу после maxval идёт один пробельный символ — и начинаются данные пикселей. Каждый пиксель описывается тройкой чисел: сколько в нём красного (R), зелёного (G) и синего (B). Из этих трёх компонентов и складывается любой цвет.

Собираем картинку руками: живой пример

Лучший способ понять PPM — увидеть его целиком. Вот полноценная картинка размером 3×2 пикселя в текстовом варианте P3. Её можно набрать в Блокноте, сохранить как .ppm — и это будет настоящее изображение:

P3
# Это комментарий: картинка 3x2 пикселя
3 2
255
255   0   0     0 255   0     0   0 255
255 255   0   255 255 255     0   0   0

Прочитаем её как программа. Заголовок говорит: формат P3, размер 3 на 2, максимум цвета 255. Дальше — шесть пикселей (по три числа на каждый). Верхний ряд: красный (255,0,0), зелёный (0,255,0), синий (0,0,255). Нижний ряд: жёлтый (255,255,0), белый (255,255,255) и чёрный (0,0,0). Вот и вся «магия».

Строки, начинающиеся с #, — это комментарии

В текстовом PPM можно оставлять заметки прямо внутри файла после символа #. Программа их игнорирует, а человеку удобно. Ещё одно проявление главной идеи формата: он рассчитан на то, что его будут читать люди.

Почему PPM не сжимает и весит много

У простоты есть цена. PPM не использует сжатие вообще: каждый пиксель занимает свои байты целиком. В сжатом по записи варианте (его помечают кодом P6) один цветной пиксель занимает ровно три байта — по одному на красный, зелёный и синий. Несложно посчитать: фотография 4000×3000 пикселей займёт около 36 мегабайт. Та же картинка в JPG уместилась бы в 2–4 МБ, а в PNG — где-то в 10–15.

Есть и второй вариант — P3, где числа записаны текстом. Он ещё «толще»: каждое число занимает несколько символов плюс пробелы. Зато такой файл можно открыть и прочитать глазами. Подробнее о разнице между всеми членами семейства и их магическими числами мы рассказываем в статье про семейство Netpbm.

0%сжатия в PPM
3 байтана пиксель в P6
1988год появления PPM
HTML-разметка с тегами картинок на экране — PPM хранит пиксели напрямую, без обёртки
Никакого скрытого слоя: в PPM число буквально равно яркости канала пикселя. Фото: Pexels

Где PPM встречается сегодня

Раз формат такой «расточительный», зачем он нужен в эпоху JPEG и WebP? Парадокс в том, что именно простота делает PPM незаменимым в технических задачах.

  • Промежуточный формат в пайплайнах. Утилиты вроде ImageMagick, dcraw и ffmpeg обмениваются картинками через PPM — потому что его умеют читать и писать вообще все, без библиотек-декодеров.
  • Программирование и учёба. Если вы пишете свой первый графический алгоритм, PPM — идеальный выбор: вывести картинку в него можно буквально в десяток строк кода. Об этом — отдельная статья про PPM в программировании.
  • Научная визуализация. Где важно сохранить точные значения без потерь и не зависеть от хитрых форматов.

Как открыть и конвертировать PPM

Скачали где-то файл .ppm и хотите просто посмотреть картинку? Двойной клик в Windows, скорее всего, ничем не поможет — система такой формат не знает. Самый быстрый и универсальный путь — конвертировать PPM в PNG или JPG. Эти форматы откроет любой просмотрщик и любой браузер, а заодно картинка похудеет в разы за счёт сжатия.

1

Загрузите файл

Перетащите .ppm в онлайн-конвертер — ничего устанавливать не нужно.

2

Выберите формат

PNG — если важно качество без потерь, JPG — если нужен минимальный вес для фото.

3

Скачайте результат

Готовую картинку можно открыть, переслать или вставить куда угодно.

Откройте свой PPM-файл прямо сейчас

Бесплатный конвертер FormatZ превратит несжатый PPM в компактный PNG за пару секунд — прямо в браузере, без установки и регистрации.

Конвертировать PPM в PNG

Если же вам, наоборот, нужно получить «голые» пиксели для своего кода или утилиты — пригодится обратное преобразование PNG в PPM. Полный список всех доступных конвертаций всегда есть на странице всех форматов.

PPM — это не устаревший формат. Это формат-фундамент: когда нужно, чтобы картинку понял кто угодно, его простота превращается в суперсилу.
PPM расшифровывается как Portable Pixmap — «переносимая карта пикселей». Это цветной растровый формат из семейства Netpbm. Файл хранит обычное цветное изображение в максимально простом виде: короткий текстовый заголовок плюс значения красного, зелёного и синего для каждого пикселя.
PPM вообще не использует сжатие. Каждый пиксель занимает свои байты целиком, как есть. Поэтому фотография в PPM весит в разы больше той же картинки в JPG или PNG. Это плата за простоту: формат легко читать и писать, но он не экономит место.
Это три родственника из одного семейства Netpbm. PBM хранит только чёрно-белое изображение (1 бит на пиксель), PGM — оттенки серого, а PPM — полноценный цвет (RGB). Устроены они одинаково: текстовый заголовок плюс данные пикселей, отличается лишь объём информации на пиксель.
Часто нет: Windows и браузеры по умолчанию PPM не показывают. Проще всего конвертировать PPM в PNG или JPG — например, в онлайн-конвертере FormatZ. После этого картинка открывается где угодно, а заодно сильно теряет в весе за счёт сжатия.
В основном в программировании и обработке изображений: PPM так просто разобрать, что его используют как промежуточный формат между утилитами вроде ImageMagick, dcraw и ffmpeg, а также в учебных проектах и научной визуализации, где важна простота, а не размер.