Netpbm

редактировать
(Перенаправлено из формата Netpbm )
Netpbm
Разработчики) Брайан Хендерсон
изначальный выпуск 1988 ; 32 года назад ( 1988)
Стабильный выпуск 10.47.61 / 9 мая 2016 г. ; 4 года назад ( 2016-05-09)
Репозиторий Отредактируйте это в Викиданных
Написано в C, Perl, оболочка Unix
Операционная система Кроссплатформенность
Лицензия Различные, считаются без 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 Внешние ссылки

Форматы файлов

Портативное растровое изображение
Расширение имени файла . pbm,.pgm,.ppm,.pnm
Тип интернет-СМИ изображение / x-переносимое-растровое изображение, изображение / x-переносное-серое изображение, изображение / x-переносимое-растровое изображение, изображение / x-переносное-anymap
Единый идентификатор типа (UTI) public.pbm
Разработан Джеф Посканзер
Тип формата Форматы файлов изображений
Расширен до Переносимая произвольная карта (PAM)
Открытый формат ? да

В проекте Netpbm используются и определяются несколько графических форматов. Портативный формат пиксельная ( PPM), то портативный формат graymap ( PGM) и формат портативных растровое изображение ( РВМ) являются форматы файлов изображений, предназначенных для быть легко обменены между платформами. Иногда их также называют переносимым форматом любой карты ( PNM), не путать с соответствующим переносимым форматом произвольной карты.

Формат 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 (белый и черный)
Портативный GrayMap P2 P5 .pgm 0–255 (серая шкала), 0–65535 (серая шкала), переменная
Portable PixMap P3 P6 .ppm 16 777 216 (0–255 для каждого канала RGB )

Значение P7относится к формату файла PAM, который также поддерживается библиотекой netpbm.

Форматы ASCII обеспечивают удобочитаемость и простой перенос на другие платформы; двоичные форматы более эффективны по размеру файла, но могут иметь собственные проблемы с порядком байтов.

В двоичных форматах PBM использует 1 бит на пиксель, PGM использует 8 или 16 бит на пиксель, а PPM использует 24 бита на пиксель: 8 для красного, 8 для зеленого, 8 для синего.

Обычно PGM хранит значения в линейном цветовом пространстве, но в зависимости от приложения часто использует sRGB или упрощенное гамма- представление. Данные файла не хранят информацию о том, какое цветовое пространство они используют, и должны выбираться пользователем или другим программным обеспечением. 16-битный PGM почти всегда сохраняется как линейный, так как гамма-коррекция обычно выгодна только в 8-битных форматах.

Обычно в 8-битном формате PPM цвета хранятся в нелинейном формате, обычно CIE Rec. 709 для красного, зеленого и синего, скорректировано CIE Rec. 709 передаточная функция гаммы. Однако очень часто цвет хранится с использованием цветового пространства sRGB или иногда с использованием линейного цветового пространства. В файле нет метаданных, указывающих, какой формат используется.

Пример PBM

Вот простой пример формата PBM (в конце каждой строки есть символ новой строки):

P1 # This is an example bitmap of the letter "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 # This is an example bitmap of the letter "J" 6 10 000010000010000010000010000010000010100010011100000000000000

Вот получившееся изображение:

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

Вот оно снова увеличено в 20 раз:

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

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

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

Пример PGM

Форматы PGM и PPM (как ASCII, так и двоичные версии) имеют дополнительный параметр для максимального значения (числа серого между черным и белым) после размеров X и Y и перед фактическими данными пикселей. Черный - 0, максимальное значение - белое. В конце каждой строки есть символ новой строки.

Пример (увеличено)
P2 # Shows the word "FEEP" (example from Netpbm man page on 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 # The part above is the header # "P3" means this is a RGB color image in ASCII # "3 2" is the width and height of the image in pixels # "255" is the maximum value for each color # The part below is image data: RGB triplets 255 0 0 # red 0 255 0 # green 0 0 255 # blue 255 255 0 # yellow 255 255 255 # white 0 0 0 # black

Двоичный формат P6 того же изображения представляет каждую цветовую составляющую каждого пикселя одним байтом (то есть тремя байтами на пиксель) в следующем порядке: красный, зеленый, затем синий. Файл меньше, но информация о цвете трудна для чтения людьми. Заголовок остается в формате ASCII, а аргументы по-прежнему разделяются пробелом. Информация о двоичном изображении идет после заголовка (который заканчивается пробелом).

Формат PPM не сжимается и, следовательно, требует больше места и пропускной способности, чем сжатый формат. Например, указанное выше изображение PNG ( переносимая сетевая графика ) 192 × 128 имеет размер файла 166 байт. При преобразовании в изображение 192 × 128 PPM размер файла составляет 73 848 байт. Формат PPM обычно является промежуточным форматом, используемым для работы с изображениями перед преобразованием в более эффективный формат, например формат PNG, без какой-либо потери информации на промежуточном этапе.

Изображение, показанное выше, с использованием только 0 или максимального значения для г Ed - г reen- б LUE каналы могут быть также закодированы как:

P3 # The same image with width 3 and height 2, # using 0 or 1 per color (red, green, blue) 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 gt; somepic.ppm ppmtobmp somepic.ppm gt; somepic.bmp

Обычно это делается в виде конвейера, чтобы сэкономить время выполнения и не оставлять временный файл somepic.ppm вокруг:

pgmtoppm "#FFFFFF" somepic.pbm | ppmtobmp gt; 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 году к форматам файлов библиотеки Netpbm был добавлен PAM, позволяющий использовать альфа-канал.

Название Netpbm произошло от разработчиков программы, сотрудничавших через Интернет, что было примечательно в то время; NetBSD операционной системы и NetHack игры получили свои имена аналогично. (В отличие от более позднего, более широко распространенного формата Portable Network Graphics (PNG), "net" в названии фактически не относится к самому изображению, которое оптимизируется для передачи по сети.)

Графический формат PAM

Портативная произвольная карта
Расширение имени файла .pam
Тип интернет-СМИ изображение / х-портативный-произвольная карта
Разработан Брайан Хендерсон
Тип формата Форматы файлов изображений
Расширен с Переносимая карта (PNM)
Открытый формат ? да

Portable Arbitrary Map ( 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
TUPLTYPE MAXVAL ГЛУБИНА комментарий
ЧЕРНОЕ И БЕЛОЕ 1 1 особый случай GRAYSCALE
СЕРЫЙ 2... 65535 1 2 байта на пиксель для MAXVALgt; 255
RGB 1... 65535 3 6 байтов на пиксель для MAXVALgt; 255
BLACKANDWHITE_ALPHA 1 2 2 байта на пиксель
GRAYSCALE_ALPHA 2... 65535 2 4 байта на пиксель для MAXVALgt; 255
RGB_ALPHA 1... 65535 4 8 байт на пиксель для MAXVALgt; 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 для этого примера может быть:

BMP format2.svg 0,0: blue 0000FF FF 0,1: green 00FF00 FF 0,2: red FF0000 FF 0,3: white FFFFFF FF 1,0: blue 0000FF 7F, half transparent 1,1: green 00FF00 7F, half transparent 1,2: red FF0000 7F, half transparent 1,3: white FFFFFF 7F, half transparent Об этом изображении
P7 WIDTH 4 HEIGHT 2 DEPTH 4 MAXVAL 255 TUPLTYPE RGB_ALPHA ENDHDR

Расширения

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

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

Смотрите также

Ссылки

внешние ссылки

Последняя правка сделана 2023-04-13 08:23:23
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте