Portable anymap
Z Wikipedii
PPM - (ang. portable pixmap), PBM - (ang. portable bitmap) oraz PGM - (ang. portable graymap) to 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
Spis treści |
[edytuj] Opis formatu
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
- Wysokość
- Szerokość
- 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ętne 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.
- Pliki PNM o maksymalnej wartości składowego koloru większej niż 255 (48 bitowe) mogą być zapisane tylko tekstowo.
[edytuj] Netpbm
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:
pnmtojpeg 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