Netpbm

редактировать
Netpbm
Разработчик (и) Брайан Хендерсон
Первый выпуск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 и другие операционные системы.

Содержание
  • 1 Форматы файлов
    • 1.1 Описание
      • 1.1.1 Пример PBM
      • 1.1.2 Пример PGM
      • 1.1.3 Пример PPM
    • 1.2 16-битные расширения
    • 1.3 32-битные расширения
  • 2 Программы
  • 3 История
  • 4 Графический формат PAM
    • 4.1 Отличия от старых форматов
    • 4.2 Прозрачность
    • 4.3 Расширения
  • 5 См. Также
  • 6 Ссылки
  • 7 Внешние ссылки
Форматы файлов
Portable pixmap
Расширение имени файла .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 BitMapP1P4.pbm0–1 (белый и черный)
Portable GrayMapP2P5.pgm0–255 (серая шкала), 0–65535 (серая шкала), переменная, от черного к белому диапазон
Portable PixMapP3P6.ppm16777216 (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

Вот простой пример формата 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

Вот итоговое изображение:

Пример преобразования ASCII-арта в растровое изображение.pbm.png

Здесь оно снова увеличено 20 раз:

Пример ASCII-арта, превращенного в масштаб растрового изображения20.pbm.png

Обратите внимание, что 0 означает белый пиксель, а 1 означает черный пиксель. Это контрастирует с другими форматами, где более высокие значения означают более яркие пиксели.

Двоичный формат P4 того же изображения представляет каждый пиксель одним битом, упаковывая 8 пикселей на байт, причем первый пиксель является самым старшим битом. Дополнительные биты добавляются в конце каждой строки, чтобы заполнить весь байт.

Пример PGM

Форматы 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

Пример PPM

Это пример цветного изображения 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

16-битные расширения

Исходное определение двоичных форматов PGM и PPM (форматы P5 и P6) не допускало битовой глубины более 8 бит. Хотя формат ASCII может поддерживать большую битовую глубину, он увеличивает размер файла и, таким образом, замедляет операции чтения и записи. Соответственно, многие программисты расширили формат, чтобы обеспечить более высокую битовую глубину. Использование более высоких битовых глубин сталкивается с проблемой принятия решения о порядке байтов файла. Различные реализации не могли договориться о том, какой порядок байтов использовать, и некоторые связывали 16-битный порядок байтов с порядком упаковки пикселей. В Netpbm, де-факто стандартной реализации форматов PNM, старший байт идет первым.

32-битные расширения

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
Portable Arbitrary Map
Расширение имени файла .pam
Тип интернет-носителя image / x-portable-randommap
РазработаноБрайаном Хендерсоном
Тип форматаФорматы файлов изображений
Расширенный изПереносимая карта (PNM)
Открытый формат ?да

Переносимая произвольная карта (PAM ) является расширением более старого двоичного формата P4...P6 графических форматов. PAM обобщает все функции PBM, PGM и PPM и предусматривает расширения. PAM определяет два новых атрибута; глубина и тип кортежа:

  1. Атрибут глубины определяет количество каналов в изображении, например 1 для изображений в оттенках серого и 3 для изображений RGB.
  2. Атрибут типа кортежа указывает, какое изображение представляет собой файл PAM представляет, таким образом, позволяя ему заменять старые форматы Netpbm, а также расширять его для новых целей, например, прозрачность.

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 («чернила включены»).

Типы кортежей PAM
TUPLTYPEMAXVALDEPTHкомментарий
BLACKANDWHITE11специальный случай GRAYSCALE
GRAYSCALE2... 6553512 байта на пиксель для MAXVAL>255
RGB1... 6553536 байтов на пиксель для MAXVAL>255
BLACKANDWHITE_ALPHA122 байта на пиксель
GRAYSCALE_ALPHA2... 6553524 байта на пиксель для MAXVAL>255
RGB_ALPHA1... 6553548 байтов на пиксель для 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 для этого примера может быть:

Формат BMP2.svg Об этом изображении
P7 WIDTH 4 HEIGHT 2 DEPTH 4 MAXVAL 255 TUPLTYPE RGB_ALPHA ENDHDR

Extensions

Механизм кортежного типа PAM допускает множество расширений. Теоретически PAM можно расширить для представления цветовых моделей, таких как CMYK.

Формат даже не ограничивается графикой, его определение позволяет использовать его для произвольных трехмерных матриц целых чисел без знака. Некоторые программы пакета Netpbm, например pamsummcol, работают как грубые матричные арифметические процессоры и используют формат PAM таким образом.

См. Также
На Викискладе есть носители, относящиеся к Создано с помощью Netpbm.
Ссылки
Внешние ссылки
Последняя правка сделана 2021-05-31 04:51:32
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте