Portable anymap

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacja, szukaj
Program w C++ tworzący plik pgm

PPM (ang. portable pixmap), PBM (ang. portable bitmap) oraz PGM (ang. portable graymap) - formaty zapisu grafiki rastrowej, używane głównie do wymiany grafiki między różnymi narzędziami graficznymi. Wszystkie trzy formaty określane są wspólnie jako PNM - (ang. portable anymap).

  • PBM zawiera obraz czarno-biały - 1 bit na piksel
  • PGM zawiera obraz w odcieniach szarości - 8 bitów na piksel
  • PPM zawiera obraz kolorowy (RGB) - maksymalnie 24 bity na piksel w trybie binarnym, i do 48 bitów w trybie tekstowym

Opis formatu[edytuj | edytuj kod]

Przykładowy tekstowy plik PBM przedstawiający literę "J":

P1
# komentarz
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

Plik zawiera kolejno:

  • nagłówek:
    • P1 lub P4 dla PBM
    • P2 lub P5 dla PGM
    • P3 lub P6 dla PPM
  • szerokość
  • wysokość
  • maksymalną wartość składową koloru (tylko PPM i PGM)
  • wartości kolejnych pikseli (lub ich kolorów składowych dla PPM) zapisane tekstowo (dla P1,P2,P3) lub binarnie (dla P4,P5,P6).

Obowiązuje też kilka zasad odnośnie zapisu:

  • Wszystkie wartości zapisane są dziesiętnie i oddzielone dowolną ilością białych znaków (spacja, tabulator, nowa linia).
  • Znaki od "#" do końca linii są pomijane.
  • Linie nie powinny być dłuższe niż 70 znaków.
  • Dane binarne muszą znajdować się zaraz za rozmiarami grafiki (oddzielone tylko jednym białym znakiem).
  • Wartości kolorów składowych występują w kolejności: czerwony, zielony, niebieski.

Starsze programy mogą nie odczytywać prawidłowo plików PNM o maksymalnej wartości składowego koloru większej niż 255 (48-bitowych) zapisanych binarnie.

Netpbm[edytuj | edytuj kod]

Netpbm to zestaw narzędzi do wsadowej konwersji i przetwarzania grafiki, operujący na plikach PNM. Pakiet składa się z wielu programów wykonujących proste czynności np.:

  • jpegtopnm - konwertuje pliki JPEG na pliki PNM
  • pnmtopng - konwertuje pliki PNM na pliki PNG
  • pnmscale - skaluje pliki PNM
  • pnmrotate - obraca pliki PNM

Aby utworzyć miniaturę pliku JPEG wystarczy wydać polecenie:

jpegtopnm plik.jpeg | pnmscale -xsize 64 | pnmtojpeg > minatura_plik.jpeg

Z pomocą powłoki bash można bardzo prosto utworzyć miniatury wszystkich plików JPEG w bieżącym katalogu:

for plik in *.jpeg *.jpg ; do jpegtopnm ${plik} | pnmscale -xsize 64 | \
pnmtojpeg > minatura_${plik} ; done

Zobacz też[edytuj | edytuj kod]

Wikibooks-logo.svg
Zobacz publikację na Wikibooks:
jak utworzyć plik ppm w C

Linki zewnętrzne[edytuj | edytuj kod]