Portable anymap
| Portable pixmap | |
|---|---|
| Расширение | .ph[1] |
| MIME-тип | image/x-portable-pixmap, -graymap, -bitmap, -anymapвсе неофициальные |
| Разработчик | Джеф Посканзер |
| Тип формата | Графические форматы |
Простые форматы хранения изображений portable pixmap (иногда определяемые какPNM):цветных (PPM),полутоновых (PGM) ичёрно-белых (PBM) определяют правила для обмена графическими файлами. Эти форматы могут обеспечивать промежуточное представление данных при конвертациирастровых графических файлов трёх перечисленных типов между разными платформами. Некоторые приложения поддерживают эти три формата напрямую, определяя их как форматPNM (portable anymap). Формат PPM был разработанДжефом Посканзером (англ. Jeff Poskanzer).
Описание формата файла
[править |править код]Разберём примербитового изображения буквы «J»:
....X.....X.....X.....X.....X.....X.X...X..XXX..............
ФорматPBM представляет этот пример в следующем виде:
P1# This is an example bit map file j.pbm6 100 0 0 0 1 00 0 0 0 1 00 0 0 0 1 00 0 0 0 1 00 0 0 0 1 00 0 0 0 1 01 0 0 0 1 00 1 1 1 0 00 0 0 0 0 00 0 0 0 0 0
СтрокаP1 определяет формат файла.Знак решётки (#) отделяет комментарий. Следующие два числа задают ширину и высоту. Затем следует матрица значений пикселов (в случае монохромного изображения, как в этом примере, — только нули и единицы).
Результирующее изображение:
. Оно же, увеличенное в 20 раз:
Использование в Netpbm
[править |править код]ПакетNetpbm может, например, использовать последовательно две программы конвертации для превращения этого кода в файлBMP:
pgmtoppm "#FFFFFF" j.pbm > j.ppmppmtobmp j.ppm > j.bmp
В зависимости от распознанного формата файла, система простых графических файлов portable pixmap может различать три сходных формата файлов, каждый в двух версиях:
- PBM — чёрно-белый (portable bitmap) (P1/P4) — 1 бит на пиксель
- PGM — полутоновый (portable graymap) (P2/P5) — 8 бит на пиксель
- PPM — цветной (portable pixmap) (P3/P6) — 24 бита на пиксель (по 8 на красный, зелёный и синий)
В каждом случае нижняя версия (P1, P2 или P3) относятся к удобочитаемым, основанным наASCII форматам, сходным с показанным на примере в этой статье. А верхние версии (P4, P5 и P6) относятся к двоичным форматам, менее удобным для разбора, но более эффективным для экономии места в файле и более удобным для разбора из-за отсутствия пробелов.
16-битное расширение
[править |править код]Изначально бинарные форматы PGM и PPM (P5 и P6) поддерживали битовую глубину не более 8 бит. Конечно, можно было использовать форматы ASCII, но при их использовании увеличивается размер и замедляется чтение файлов. В результате многие разработчики пытались расширить формат для поддержки большей битовой глубины. При использовании большей глубины мы сталкиваемся с проблемойпорядка байтов (Endianness) в файле. Различные приложения не согласованы в каком-либо одном следовании порядка байтов (Endianness).Netpbm при работе с PNMde facto использует порядок от старшего к младшему (big-endian).
Пример PPM
[править |править код]P3# P3 обозначает, что цвета даны в ASCII, # затем идут цифры, обозначающие число колонок и рядов (3 колонки и 2 ряда), # 255 для максимального значения цвета, # затем триплеты RGB 3 2255255 0 00 255 00 0 255255 255 0255 255 2550 0 0
Формат P6 для этого же изображения будет хранить каждую цветовую составляющую цвета в одном байте (то есть три байта на пиксел). Файл будет меньше, но информация о цвете при просмотре такого файла не будет восприниматься человеком непосредственно:
P6#тут возможна строка комментариев3 2255!@#$%^&*()_+|{}:"<Формат PPM несжатый, поэтому файлы в нём имеет большие размеры.Например,PNG-изображение 192×128 может иметь размер 552 байта. После его конвертации в PPM размер файла составит 73 848 байт.
Формат PPM достаточно прост для самостоятельного написания кода, который сможет читать и записывать данные в этом формате.
См. также
[править |править код]Примечания
[править |править код]- ↑FILE NAME //The PNM Format
Ссылки
[править |править код]- Format details for the various pnm formats: