Format PBM(5)

NAZWA

pbm - dwupoziomowy format obrazu Netpbm

OPIS

Program jest częścią Netpbm(1).

Format PBM jest najmniejszym wspólnym mianownikiem dla monochromatycznego formatu pliku. Jest wspólnym językiem większej rodziny filtrów konwersji obrazów bitmapowych. Ponieważ format nie przejmuje się wydajnością, jest prosty i wystarczająco ogólny, tak że każdy może tworzyć programy konwertujące bitmapy z lub do innych formatów graficznych albo przetwarzające obrazy.

Nazwa „PBM” jest akronimem, pochodzącym od słów „Przenośna BitMapa”.

Nie jest to format, którego ktokolwiek normalnie by użył do przechowywania pliku lub do przesłania go do kogoś innego — jest zbyt drogi i mało wyrazisty do tego. Jest to po prostu format przejściowy. Najczęściej jest używany w potokach między dwoma programami.

UKŁAD

Definicja formatu jest następująca:

Plik PBM składa się z sekwencji jednego lub więcej obrazów PBM. Nie występują żadne inne dane, separatory i wyrównania przed obrazami, po nich ani między nimi.

W skład każdego obrazu PBM wchodzą:

•   "Numer magiczny", identyfikujący rodzaj pliku. Numerem magicznym pliku pbm są dwa znaki: "P4".

•   Biała spacja (spacje, tabulacje, CR, LF).

•   Szerokość obrazu pikselach, sformatowana jako dziesiętne znaki ASCII.

•   Biała spacja.

•   Wysokość obrazu w pikselach, znów jako dziesiętne znaki ASCII.

•   Pojedynczy znak białej spacji (zwykle znak nowego wiersza).

•   Raster o liczbie wierszy określonej przez wysokość obrazu, od góry do dołu. Każdy wiersz składa się z bitów w liczbie zadanej przez szerokość obrazu. Bity są pakowane po 8 w bajt. Ostatni bajt w wierszu jest wypełniony nieznaczącymi bitami. Każdy bit reprezentuje piksel: 1 to czarny, a 0 to biały. Porządek pikseli jest od lewej do prawej. Porządek ich przechowywania w każdym bajcie pliku jest od najbardziej znaczącego bitu do najmniej znaczącego. Porządek bajtów w pliku jest od początku pliku do końca pliku.

    Wiersz jest poziomy. Kolumna jest pionowa. Piksele w obrazie są kwadratowe i ciągłe.

•   Przed białym znakiem ograniczającym raster, wszelkie znaki rozpoczynające się od "#" aż do następnego znaku (z jego wyłączeniem): powrotu karetki, nowego wiersza lub końca pliku, są ignorowane.

    (Przed czerwcem 2024, powrót karetki lub wysuw wiersza był unormowany jako część komentarza i ignorowany, lecz podczas 22 lat, przez które komentarze istniały według normy, Netpbm nigdy tego nie zaimplementował).

All characters referred to herein are encoded in ASCII. "newline" refers to the character known in ASCII as Line Feed or LF. A "white space" character is space, CR, LF, TAB, VT, or FF (I.e. what the ANSI standard C isspace() function calls white space).

  Minimal Subset

The PBM format is so simple that many programmers write programs to process
  it directly, without using a library such as libnetpbm, reverse
  engineering a subset of the format from examples rather than using the
  specification. Therefore, if you want to produce an image that as many
  programs as possible can read, you should stick to the following subset.

The image consists of the following bytes:

•   'P4' followed by newline

•   width and height separated by a space (e.g. '50 100'),
        followed by newline

•   The raster

There is only one image in the file.

The program pnmtopnm produces this minimal subset, so if you have a
  more complex PBM image, you can pass it to to a less tolerant program
  through pnmtopnm.

  Prosty PBM

Istnieje inna wersja formatu PBM, nawet jeszcze bardziej uproszczona, jeszcze bardziej nieprzejmująca się zajmowaną przestrzenią niż PBM, zwana "prostym PBM". Prosty PBM w zasadzie pojawił się wcześniej, ale nawet jego twórca nie mógł znieść marnowania zasobów i po jakimś czasie wymyślił to co dziś jest znane jako zwykły format PBM. Ale plik w formacie prostego PBM jest tak nadmiarowy, tak przesadzony, że nie ma możliwości jego uszkodzenia. Można wysyłać go przez nawet najbardziej liberalny system pocztowy (co było oryginalnym celem formatu PBM), a plik i tak będzie wciąż czytelny. Można zamienić tuzin przypadkowo wybranych bitów, a potem z łatwością odtworzyć oryginalny obraz. Nie ma potrzeby definiowania tego formatu tutaj, ponieważ łatwo można go rozszyfrować przez analizowanie.

Program Netpbm tworzy domyślnie Surowy format PBM zamiast Prostego PBM, lecz opcja ogólna (index.html#commonoptions) -plain wybiera Prosty PBM.

Różnice to:

•   Plik zawiera dokładnie jeden obraz.

•   "Magiczny numer" to "P1" zamiast "P4".

•   Każdy piksel w rastrze jest reprezentowany przez bajt zawierający znaki ASCII: "1" lub "0", oznaczające odpowiednio kolor czarny lub biały. Koniec wiersza nie zawiera bitów wyrównania.

•   Biała spacja w sekcji rastra jest ignorowana.

•   Po zakończeniu sekcji rastra można podać dowolne śmieci, jakie tylko się chce, pod warunkiem, że zaczynają się od białej spacji.

•   Linia nie powinna być dłuższa niż 70 znaków.

    Oto przykład małego obrazu w prostym formacie PBM:
    P1
    # feep.pbm
    24 7
    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 1 1 1 1 0 0 1 1 1 1 0 0 1 1 1 1 0 0 1 1 1 1 0
    0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0
    0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 1 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 1 1 1 0 0 1 1 1 1 0 0 1 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

Na końcu każdego wiersza znajduje się znak nowego wiersza.

Program pnmtoplainpnm umożliwia wygenerowanie Prostego formatu PBM z regularnego formatu PBM (tylko pierwszy obraz).

Programy, odczytujące ten format powinny być jak najwyrozumialsze, przyjmując wszystko, co z daleka wygląda na bitmapę.

IDENTYFIKATOR INTERNETOWY (MIME)

Dla formatu PBM nie zarejestrowano internetowego identyfikatora formatu danych (Internet Media Type — MIME) w IANA, lecz konwencjonalna jest wartość image/x-portable-bitmap.

Proszę zauważyć, że image/x-portable-anymap dotyczy też PNM.

NAZWA PLIKU

Nie ma wymagań odnośnie nazwy pliku PBM, lecz przyjęło się rozszerzenie „.pbm”. Konwencjonalne jest również „pnm” w przypadkach, gdy nie jest wygodne rozróżnianie pomiędzy danymi podformatami PNM.

ZGODNOŚĆ

Przed lipcem 2000 roku plik PBM mógł zawierać tylko jeden obraz. W wyniku tego większość narzędzi przetwarzających pliki PBM ignoruje (nie czyta) danych po pierwszym obrazie.

ZOBACZ TAKŻE
libnetpbm(1) , pnm(1) , pgm(1) , ppm(1) , pam(1) , programy, które przetwarzają PBM

ŹRÓDŁO DOKUMENTU
Niniejszą stronę podręcznika wygenerowano za pomocą narzędzia Netpbm „makeman” ze źródeł HTML. Główna dokumentacja jest dostępna pod adresem

    http://netpbm.sourceforge.net/doc/pbm.html

TŁUMACZENIE
Tłumaczenie niniejszej strony podręcznika: Przemek Borys <pborys@dione.ids.pl>, Robert Luberda <robert@debian.org> i Michał Kułach <michal.kulach@gmail.com>

Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z GNU General Public License w wersji 3 (https://www.gnu.org/licenses/gpl-3.0.html) lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.

Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej manpages-pl-list@lists.sourceforge.net.