Формат PBM (Portable Bitmap) — один из самых простых и ранних форматов графических файлов, используемых для хранения монохромных изображений. Он является частью пакета Netpbm, который также включает PGM (Portable GrayMap) для изображений в оттенках серого и PPM (Portable PixMap) для цветных изображений. Формат PBM разработан так, чтобы его было чрезвычайно легко читать и записывать в программе, а также чтобы он был понятным и однозначным. Он не предназначен для использования в качестве отдельного формата, а скорее как наименьший общий знаменатель для преобразования между различными форматами изображений.
Формат PBM поддерживает только черно-белые (1-битные) изображения. Каждый пиксель на изображении представлен одним битом — 0 для белого и 1 для черного. Простота формата позволяет легко манипулировать им с помощью основных инструментов редактирования текста или языков программирования без необходимости использования специализированных библиотек обработки изображений. Однако эта простота также означает, что файлы PBM могут быть больше, чем более сложные форматы, такие как JPEG или PNG, которые используют алгоритмы сжатия для уменьшения размера файла.
Существует две разновидности формата PBM: формат ASCII (обычный), известный как P1, и двоичный (необработанный) формат, известный как P4. Формат ASCII доступен для чтения человеком и может быть создан или отредактирован с помощью простого текстового редактора. Двоичный формат не доступен для чтения человеком, но он более экономичен с точки зрения пространства и быстрее для чтения и записи программами. Несмотря на различия в хранении, оба формата представляют один и тот же тип данных изображения и могут быть преобразованы друг в друга без потери информации.
Структура файла PBM в формате ASCII начинается с двухбайтового магического числа, которое идентифицирует тип файла. Для формата PBM ASCII это «P1». За магическим числом следует пробел (пробелы, табуляции, CR, LF), а затем спецификация ширины, которая представляет собой количество столбцов на изображении, за которой следует еще один пробел, а затем спецификация высоты, которая представляет собой количество строк на изображении. После спецификации высоты следует еще один пробел, а затем начинаются данные пикселей.
Данные пикселей в файле ASCII PBM состоят из серии «0» и «1», где каждый «0» представляет белый пиксель, а каждый «1» представляет черный пиксель. Пиксели расположены в строках, причем каждая строка пикселей находится на новой строке. Пробелы допускаются в любом месте данных пикселей, кроме двухсимвольной последовательности (они не допускаются между двумя символами последовательности). Конец файла достигается после чтения width*height битов.
Напротив, двоичный формат PBM начинается с магического числа «P4» вместо «P1». После магического числа формат файла такой же, как и в версии ASCII, пока не начнутся данные пикселей. Двоичные данные пикселей упаковываются в байты, причем самый старший бит (MSB) каждого байта представляет самый левый пиксель, а каждая строка пикселей дополняется по мере необходимости, чтобы заполнить последний байт. Дополнительные биты не имеют значения, и их значения игнорируются.
Двоичный формат более экономичен с точки зрения пространства, поскольку он использует полный байт для представления восьми пикселей, в отличие от формата ASCII, который использует не менее восьми байтов (один символ на пиксель плюс пробел). Однако двоичный формат не доступен для чтения человеком и требует программы, которая понимает формат PBM, для отображения или редактирования изображения.
Программное создание файла PBM относительно просто. На языке программирования, таком как C, можно открыть файл в режиме записи, вывести соответствующее магическое число, записать ширину и высоту в виде чисел ASCII, разделенных пробелами, а затем вывести данные пикселей. Для ASCII PBM данные пикселей можно записать в виде серии «0» и «1» с соответствующими переходами на новую строку. Для двоичного PBM данные пикселей должны быть упакованы в байты и записаны в файл в двоичном режиме.
Чтение файла PBM также несложно. Программа считывает магическое число, чтобы определить формат, пропускает пробелы, считывает ширину и высоту, пропускает еще пробелы, а затем считывает данные пикселей. Для ASCII PBM программа может считывать символы по одному и интерпретировать их как значения пикселей. Для двоичного PBM программа должна считывать байты и распаковывать их в отдельные биты, чтобы получить значения пикселей.
Формат PBM не поддерживает никакой формы сжатия или кодирования, что означает, что размер файла прямо пропорционален количеству пикселей на изображении. Это может привести к очень большим файлам для изображений с высоким разрешением. Однако простота формата делает его идеальным для изучения обработки изображений, для использования в ситуациях, когда точность изображения важнее размера файла, или для использования в качестве промежуточного формата в процессах преобразования изображений.
Одним из преимуществ формата PBM является его простота и легкость манипулирования. Например, чтобы инвертировать изображение PBM (превратить все черные пиксели в белые и наоборот), можно просто заменить все «0» на «1», а все «1» на «0» в данных пикселей. Это можно сделать с помощью простого сценария или программы обработки текста. Аналогичным образом, другие основные операции с изображениями, такие как поворот или зеркальное отображение, могут быть реализованы с помощью простых алгоритмов.
Несмотря на свою простоту, формат PBM не широко используется для общего хранения или обмена изображениями. Это в первую очередь связано с отсутствием сжатия, что делает его неэффективным для хранения больших изображений или для использования в Интернете, где пропускная способность может быть проблемой. Более современные форматы, такие как JPEG, PNG и GIF, предлагают различные формы сжатия и лучше подходят для этих целей. Однако формат PBM все еще используется в некоторых контекстах, особенно для простой графики в разработке программного обеспечения и в качестве учебного пособия по концепциям обработки изображений.
Пакет Netpbm, который включает формат PBM, предоставляет набор инструментов для манипулирования файлами PBM, PGM и PPM. Эти инструменты позволяют преобразовывать форматы Netpbm в другие популярные форматы изображений и обратно, а также выполнять основные операции обработки изображений, такие как масштабирование, обрезка и манипулирование цветом. Пакет разработан так, чтобы быть легко расширяемым, с простым интерфейсом для добавления новых функций.
В заключение, формат изображений PBM — это простой, бесхитростный формат файлов для хранения монохромных растровых изображений. Его простота делает его легким для понимания и манипулирования, что может быть полезно в образовательных целях или для простых задач обработки изображений. Хотя он не подходит для всех приложений из-за отсутствия сжатия и в результате больших размеров файлов, он остается полезным форматом в тех конкретных контекстах, где его преимущества наиболее выгодны. Формат PBM, наряду с остальной частью пакета Netpbm, по-прежнему является ценным инструментом для тех, кто работает с базовой обработкой изображений и преобразованием форматов.
Этот конвертер полностью работает в вашем браузере. Когда вы выбираете файл, он загружается в память и преобразуется в выбранный формат. Затем вы можете скачать преобразованный файл.
Преобразования начинаются мгновенно, и большинство файлов преобразуются за считанные секунды. Более крупные файлы могут занимать больше времени.
Ваши файлы никогда не загружаются на наши серверы. Они преобразуются в вашем браузере, а затем скачиваются. Мы никогда не видим ваши файлы.
Мы поддерживаем преобразование между всеми форматами изображений, включая JPEG, PNG, GIF, WebP, SVG, BMP, TIFF и другие.
Этот конвертер полностью бесплатен и всегда будет бесплатным. Поскольку он работает в вашем браузере, нам не нужно платить за серверы, поэтому мы не взимаем плату с вас.
Да! Вы можете преобразовать сколько угодно файлов одновременно. Просто выберите несколько файлов при их добавлении.