Разработчик (и) | Брайан Хендерсон |
---|---|
Первый выпуск | 1988; 32 года назад (1988 г.) |
Стабильный выпуск | 10.47.61 / 9 мая 2016 г.; 4 года назад (09.05.2016) |
Репозиторий | |
Написано на | C, Perl, Unix Shell |
Операционная система | Кросс-платформенная |
Лицензия | Различные, считается без DFSG |
Веб-сайт | netpbm.sourceforge.net |
Netpbm - это пакет с открытым исходным кодом, содержащий графические программы и библиотеку программирования. Он используется в основном в мире Unix, где его можно найти включенным во все основные дистрибутивы операционной системы с открытым исходным кодом, но он также работает в Microsoft Windows, macOS и другие операционные системы.
Расширение имени файла | .pbm,.pgm,.ppm,.pnm |
---|---|
Тип интернет-носителя | image / x-portable-bitmap, image / x-portable-graymap, image / x-portable-pixmap, image / x-portable-anymap |
Универсальный идентификатор типа (UTI) | public.pbm |
Разработано | Джефом Посканцером |
Тип формата | Форматы файлов изображений |
Расширен до | Portable Arbitrary Map (PAM) |
Открытая форма at ? | да |
Несколько графических форматов используются и определены проектом Netpbm. переносимый формат растрового изображения (PPM ), переносимый формат серого изображения (PGM ) и переносимый растровый формат (PBM ) - это форматы файлов изображений, предназначенные для простого обмена между платформами. Их также иногда вместе называют портативным форматом произвольной карты (PNM ), не путать с соответствующим форматом портативной произвольной карты (PAM). «Магическое число» (Px) в начале файла определяет тип, а не расширение файла, хотя лучше всего использовать правильное расширение, если это возможно.
Формат PBM был изобретен Джефом Посканцером в 1980-х годах как формат, который позволял передавать монохромные растровые изображения в сообщении электронной почты в виде простого текста ASCII, что позволяло сохранять любые изменения в тексте. форматирование. Poskanzer разработал первую библиотеку инструментов для работы с форматом PBM, Pbmplus, выпущенную в 1988 году. Она в основном содержала инструменты для преобразования между PBM и другими графическими форматами. К концу 1988 года Poskanzer разработал форматы PGM и PPM вместе с соответствующими инструментами и добавил их в Pbmplus. Последний выпуск Pbmplus состоялся 10 декабря 1991 года.
В 1993 году была разработана библиотека Netpbm для замены не поддерживаемого Pbmplus. Это была просто переупаковка Pbmplus с дополнениями и исправлениями, представленными людьми со всего мира.
Каждый файл начинается с двухбайтового магического числа (в ASCII), который определяет тип файла (PBM, PGM и PPM) и его кодировку (ASCII / "простой" или двоичный / "необработанный"). Магическое число - это заглавная буква P, за которой следует однозначное число.
Тип | Магическое число | Расширение | Цвета | |
---|---|---|---|---|
ASCII (простой) | Двоичный (необработанный) | |||
Portable BitMap | P1 | P4 | .pbm | 0–1 (белый и черный) |
Portable GrayMap | P2 | P5 | .pgm | 0–255 (серая шкала), 0–65535 (серая шкала), переменная, от черного к белому диапазон |
Portable PixMap | P3 | P6 | .ppm | 16777216 (0–255 для каждого канала RGB ), некоторая поддержка 0-65535 на канал |
значение of P7
относится к формату файлов PAM, который также поддерживается библиотекой netpbm.
Форматы ASCII ("простые") обеспечивают удобочитаемость и легкость перевод на другие платформы; двоичные («сырые») форматы более эффективны по размеру файла, но могут иметь собственные проблемы с порядком байтов.
В двоичных форматах PBM использует 1 бит на пиксель, PGM использует 8 или 16 бит на пиксель, а PPM использует 24 бита на пиксель: 8 для красного, 8 для зеленого, 8 для синего. Некоторые читатели и писатели могут поддерживать 48 бит на пиксель (по 16 для R, G, B), но это все еще редко.
Обычно PGM хранит значения в линейном цветовом пространстве, но в зависимости от приложения часто используется представление sRGB или упрощенное гамма представление. Данные файла не хранят информацию о том, какое цветовое пространство они используют, и должны выбираться пользователем или другим программным обеспечением. 16-битный PGM почти всегда сохраняется как линейный, так как гамма-коррекция обычно выгодна только в 8-битных форматах.
Обычно 8-битный формат PPM сохраняет цвета в нелинейном формате, обычно CIE Rec. 709 для красного, зеленого и синего, скорректировано CIE Rec. 709 передаточная функция гаммы. Однако очень часто цвет хранится с использованием цветового пространства sRGB или иногда с использованием линейного цветового пространства . В файле нет метаданных, указывающих, какой формат используется.
Вот простой пример формата PBM (в конце каждой строки есть символ новой строки):
P1 # Это пример битовая карта буквы «J» 6 10 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Строка P1 определяет формат файла. Знак числа вводит комментарий. Следующие два числа указывают ширину и высоту. Далее следует матрица со значениями пикселей (здесь в монохромном случае только нули и единицы).
Необязательно, чтобы пиксели были хорошо выстроены, формат игнорирует пробелы и переводы строки в разделе данных, хотя рекомендуется, чтобы длина строки не превышала 76 символов. Ниже показано то же изображение:
P1 # Это пример растрового изображения буквы «J» 6 10 000010000010000010000010000010000010100010011100000000000000
Вот итоговое изображение:
Здесь оно снова увеличено 20 раз:
Обратите внимание, что 0 означает белый пиксель, а 1 означает черный пиксель. Это контрастирует с другими форматами, где более высокие значения означают более яркие пиксели.
Двоичный формат P4 того же изображения представляет каждый пиксель одним битом, упаковывая 8 пикселей на байт, причем первый пиксель является самым старшим битом. Дополнительные биты добавляются в конце каждой строки, чтобы заполнить весь байт.
Форматы PGM и PPM (как ASCII, так и двоичная версии) имеют дополнительный параметр для максимального значения (числа серого между черным и белым) после размеров X и Y и перед фактическими данными пикселей. Черный - 0, максимальное значение - белое. В конце каждой строки есть символ новой строки.
Пример (увеличенный)P2 # Показывает слово «FEEP» (пример из справочной страницы Netpbm на PGM) 24 7 15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 0 0 7 7 7 7 0 0 11 11 11 11 0 0 15 15 15 15 0 0 3 0 0 0 0 0 7 0 0 0 0 0 11 0 0 0 0 0 15 0 0 15 0 0 3 3 3 0 0 0 7 7 7 0 0 0 11 11 11 0 0 0 15 15 15 15 0 0 3 0 0 0 0 0 7 0 0 0 0 0 11 0 0 0 0 0 15 0 0 0 0 0 3 0 0 0 0 0 7 7 7 7 0 0 11 11 11 11 0 0 15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Это пример цветного изображения RGB, сохраненного в формате PPM. В конце каждой строки есть символ новой строки.
Изображение (увеличенное)P3 3 2 255 # Часть выше - это заголовок # "P3" означает, что это цветное изображение RGB в ASCII # "3 2" - это ширина и высота изображения в пикселях # "255" - максимальное значение для каждого цвета. # Часть ниже - данные изображения: триплеты RGB 255 0 0 # красный 0 255 0 # зеленый 0 0 255 # синий 255 255 0 # желтый 255 255 255 # белый 0 0 0 # черный
Двоичный формат P6 того же изображения представляет каждую цветовую составляющую каждого пикселя одним байтом (то есть тремя байтами на пиксель) в следующем порядке: красный, зеленый, затем синий. Файл меньше, но информация о цвете трудна для чтения людьми. Заголовок остается в формате ASCII, а аргументы по-прежнему разделяются пробелом. Информация о двоичном изображении идет после заголовка (который заканчивается пробелом).
Формат PPM не сжимается и, следовательно, требует больше места и пропускной способности, чем сжатый формат. Например, указанное выше изображение 192 × 128 PNG (Portable Network Graphics ) имеет размер файла 166 байтов. При преобразовании в изображение 192 × 128 PPM размер файла составляет 73 848 байт. Формат PPM обычно является промежуточным форматом, используемым для работы с изображениями перед преобразованием в более эффективный формат, например формат PNG, без какой-либо потери информации на промежуточном этапе.
Изображение, показанное выше с использованием только 0 или максимального значения для r ed- g reen- b каналы lue также могут быть закодированы как:
P3 # То же изображение с шириной 3 и высотой 2, # используя 0 или 1 для каждого цвета (красный, зеленый, синий) 3 2 1 1 0 0 0 1 0 0 0 1 1 1 0 1 1 1 0 0 0
Пробел, включая концы строк и строки комментариев, синтаксически эквивалентен одиночному пробелу в заголовках PNM. Для простых форматов P1... P3 это также влияет на строки растрового изображения; фактически строки должны быть ограничены до 70 символов:
P3 3 2 1 1 0 0 0 1 0 0 0 1 1 1 0 1 1 1 0 0 0
Исходное определение двоичных форматов PGM и PPM (форматы P5 и P6) не допускало битовой глубины более 8 бит. Хотя формат ASCII может поддерживать большую битовую глубину, он увеличивает размер файла и, таким образом, замедляет операции чтения и записи. Соответственно, многие программисты расширили формат, чтобы обеспечить более высокую битовую глубину. Использование более высоких битовых глубин сталкивается с проблемой принятия решения о порядке байтов файла. Различные реализации не могли договориться о том, какой порядок байтов использовать, и некоторые связывали 16-битный порядок байтов с порядком упаковки пикселей. В Netpbm, де-факто стандартной реализации форматов PNM, старший байт идет первым.
PFM (Portable Floatmap) - это неофициальное четырехбайтовое расширение IEEE 754 с плавающей запятой одинарной точности. Цветной файл идентифицируется текстом ASCII «PF» в первой строке заголовка и шкалой серого - «Pf». Следующая строка текста ASCII содержит ширину и высоту, разделенные шестнадцатеричным символом пробела 20 и иногда шестнадцатеричным 0A (в результате получается четыре строки). После каждой строки записывается шестнадцатеричный символ пробела 0A, а не комбинация Windows / DOS CR / LF. Третья строка текста ASCII указывает отрицательное число с прямым порядком байтов с плавающей запятой, а положительное число с прямым порядком байтов с плавающей запятой. Абсолютное значение числа указывает диапазон. Таким образом, третья строка, содержащая -1.0, указывает на прямой порядок байтов в диапазоне от нуля до единицы. Нет комментариев. После заголовка файл переходит к числам с плавающей запятой для каждого пикселя, указанного в порядке слева направо, снизу вверх. Некоторые программы предлагают PF4 как дополнительное расширение для формата RGBA.
Поддерживается программами Photoshop и Gimp.
Netpbm содержит более 220 отдельных программ в пакете, большинство из которых имеют в названиях «pbm», «pgm», «ppm», «pam» или «pnm».. Например, можно использовать pamscaleдля уменьшения изображения на 10%, pamcompдля наложения одного изображения поверх другого, pbmtextдля создания изображения текста. или уменьшить количество цветов в изображении с помощью pnmquant.
Программы разработаны как минимальные строительные блоки, которые можно использовать в различных комбинациях для других целей. Пакет Netpbm может, например, использовать две последовательные программы преобразования, чтобы преобразовать изображение в формате PBM в файл .bmp :
pgmtoppm "#FFFFFF" somepic.pbm>somepic. ppm ppmtobmp somepic.ppm>somepic.bmp
Это чаще всего выполняется как конвейер, чтобы сэкономить время выполнения и не оставлять временный файл somepic.ppm вокруг:
pgmtoppm "#FFFFFF" somepic.pbm | ppmtobmp>somepic.bmp
Программы Netpbm часто используются как промежуточные звенья для преобразования между малоизвестными форматами. Например, может не быть инструмента для преобразования дампа окна X11 (формат XWD ) непосредственно в файл Macintosh PICT, но это можно сделать, запустив xwdtopnm, затем ppmtopict. (Инструменты, которые говорят, что они выводят вывод PNM, либо PBM, PGM, либо PPM. Инструменты, импортирующие PNM, будут читать любой из трех форматов.) В качестве более сложного примера инструменты Netpbm могут конвертировать 48 × 48 XBM в Ikon и в конечном итоге X-Face.
Формат PBM (черно-белый) был изобретен Джефом Посканцером в середине 1980-х годов. В то время не существовало стандартного надежного способа отправки двоичных файлов по электронной почте, и попытки отправить что-либо, кроме 7-битного ASCII по электронной почте, часто приводили к повреждению данных. PBM был разработан, чтобы изображения можно было отправлять по электронной почте без повреждения. Poskanzer выпустил предшественника Netpbm под названием Pbmplus в 1988 году. К концу 1988 года Poskanzer разработал форматы PGM (оттенки серого) и PPM (цветной) и выпустил их вместе с Pbmplus.
Последний выпуск Pbmplus состоялся 10 декабря 1991 года. Poskanzer больше не выпускал никаких обновлений, и в 1993 году вместо него был разработан Netpbm. Сначала это был не что иное, как переименованный выпуск Pbmplus, но обновления продолжали происходить до 1995 года, когда от пакета снова отказались. В 1999 году пакет Netpbm был подхвачен его нынешним сопровождающим Брайаном Хендерсоном.
В 2000 году PAM был добавлен к форматам файлов библиотеки Netpbm, разрешающим альфа-канал.
Название Netpbm пришло от разработчиков программы, сотрудничавших в Интернете, что было примечательно в то время; операционная система NetBSD и игра NetHack получили аналогичные названия. (В отличие от более позднего, более распространенного формата Portable Network Graphics (PNG), "net" в названии фактически не относится к самому изображению, которое оптимизируется для передачи по сети.)
Расширение имени файла | .pam |
---|---|
Тип интернет-носителя | image / x-portable-randommap |
Разработано | Брайаном Хендерсоном |
Тип формата | Форматы файлов изображений |
Расширенный из | Переносимая карта (PNM) |
Открытый формат ? | да |
Переносимая произвольная карта (PAM ) является расширением более старого двоичного формата P4...P6 графических форматов. PAM обобщает все функции PBM, PGM и PPM и предусматривает расширения. PAM определяет два новых атрибута; глубина и тип кортежа:
PAM поддерживается XnView и FFmpeg. Как указано, TUPLTYPE
является необязательным; однако FFmpeg требует этого.
Заголовок для формата файла PAM начинается с P7 и (в отличие от других форматов) заканчивается явным закрытием: ENDHDR. Концы строк в заголовке PAM имеют значение; для PNM концы строк - пробелы.
Не существует простой (удобочитаемой, основанной на ASCII ) версии PAM. Файлы PAM всегда являются двоичными, и попытки использовать переключатель -plain
с программами Netpbm, которые производят выходные данные PAM, приводят к сообщению об ошибке.
Для черно-белой версии PAM (глубина 1, тип кортежа BLACKANDWHITE), соответствующей PBM, PAM использует один байт на пиксель вместо использования PBM одного бита на пиксель (упаковка восьми пикселей в один байт). Кроме того, значение 1 в таком изображении PAM обозначает белый («свет включен»), в отличие от черного в PBM («чернила включены»).
TUPLTYPE | MAXVAL | DEPTH | комментарий |
---|---|---|---|
BLACKANDWHITE | 1 | 1 | специальный случай GRAYSCALE |
GRAYSCALE | 2... 65535 | 1 | 2 байта на пиксель для MAXVAL>255 |
RGB | 1... 65535 | 3 | 6 байтов на пиксель для MAXVAL>255 |
BLACKANDWHITE_ALPHA | 1 | 2 | 2 байта на пиксель |
GRAYSCALE_ALPHA | 2... 65535 | 2 | 4 байта на пиксель для MAXVAL>255 |
RGB_ALPHA | 1... 65535 | 4 | 8 байтов на пиксель для MAXVAL>255 |
Все основные типы кортежей (BLACKANDWHITE, GRAYSCALE и RGB) имеют вариант с каналом прозрачности . Тип кортежа создается путем добавления суффикса «_ALPHA» к базовому типу кортежа.
Например, изображение с кортежем типа GRAYSCALE эквивалентно PGM (переносимая карта серого). GRAYSCALE_ALPHA с прозрачностью невозможно напрямую использовать в PGM. Спецификация разрешает MAXVAL 1 для GRAYSCALE, но это будет иметь тот же эффект, что и BLACKANDWHITE.
Пример в статье BMP показывает изображение RGBA с 4 × 2 = 8 синих, зеленых, красных и белых пикселей; полупрозрачный (0x7F) в первом нижнем ряду, непрозрачный (0xFF) во втором верхнем ряду; шестнадцатеричный. FF00007F 00FF007F 0000FF7F FFFFFF7F FF0000FF 00FF00FF 0000FFFF FFFFFFFF
в порядке BGRA . Для PAM это растровое изображение должно быть указано в порядке RGBA, меняя местами 1-й и 3-й байты в каждом пикселе. Строки BMP обычно располагаются снизу вверх, для строк PAM и PNM - сверху вниз (т.е. для этого примера 0000FFFF 00FF00FF FF0000FF FFFFFFFF 0000FF7F 00FF007F FF00007F FFFFFF7F
). Заголовок PAM для этого примера может быть:
P7 WIDTH 4 HEIGHT 2 DEPTH 4 MAXVAL 255 TUPLTYPE RGB_ALPHA ENDHDR
Механизм кортежного типа PAM допускает множество расширений. Теоретически PAM можно расширить для представления цветовых моделей, таких как CMYK.
Формат даже не ограничивается графикой, его определение позволяет использовать его для произвольных трехмерных матриц целых чисел без знака. Некоторые программы пакета Netpbm, например pamsummcol, работают как грубые матричные арифметические процессоры и используют формат PAM таким образом.
На Викискладе есть носители, относящиеся к Создано с помощью Netpbm. |