Netpbmfile is a Python library to read and write image files in the Netpbm or related formats:
PBM (Portable Bit Map): P1 (text) and P4 (binary)
PGM (Portable Gray Map): P2 (text) and P5 (binary)
PPM (Portable Pixel Map): P3 (text) and P6 (binary)
PNM (Portable Any Map): shorthand for PBM, PGM, and PPM collectively
PAM (Portable Arbitrary Map): P7, bilevel, gray, rgb, and arbitrary depths
PGX (Portable Graymap Signed): PG, signed grayscale
PFM (Portable Float Map): Pf (gray), PF (rgb), and PF4 (rgba), read-only
XV thumbnail: P7 332 (rgb332), read-only
The Netpbm formats are specified at https://netpbm.sourceforge.net/doc/.
The PGX format is specified in ITU-T Rec. T.803.
No gamma correction or scaling is performed.
- Author:
- License:
BSD-3-Clause
- Version:
2026.7.25
- DOI:
Quickstart
Install the netpbmfile package and all dependencies from the Python Package Index:
python -m pip install -U "netpbmfile[all]"
See Examples for using the programming interface.
Source code and support are available on GitHub.
Requirements
This revision was tested with the following requirements and dependencies (other versions may work):
Revisions
2026.7.25
Drop support for Python 3.11 and numpy 2.0 (SPEC0), support Python 3.15.
2026.1.29
Fix code review issues.
2026.1.8
Improve code quality.
2025.12.12
Drop support for Python 3.10, support Python 3.14.
2025.5.8
Remove doctest command line option.
2025.1.1
Improve type hints.
Drop support for Python 3.9, support Python 3.13.
2024.5.24
…
Refer to the CHANGES file for older revisions.
Examples
Write a numpy array to a Netpbm file in grayscale binary format:
>>> import numpy
>>> data = numpy.array([[0, 1], [65534, 65535]], dtype=numpy.uint16)
>>> imwrite('_tmp.pgm', data)
Read the image data from a Netpbm file as numpy array:
>>> image = imread('_tmp.pgm')
>>> numpy.testing.assert_equal(image, data)
Access meta and image data in a Netpbm file:
>>> with NetpbmFile('_tmp.pgm') as pgm:
... pgm.magicnumber
... pgm.axes
... pgm.shape
... pgm.dtype
... pgm.maxval
... pgm.asarray().tolist()
...
'P5'
'YX'
(2, 2)
dtype('>u2')
65535
[[0, 1], [65534, 65535]]
View the image and metadata in the Netpbm file from the command line:
$ python -m netpbmfile _tmp.pgm
Metadata
Release files for netpbmfile 2026.7.25
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| netpbmfile-2026.7.25.tar.gz | 31.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| netpbmfile-2026.7.25-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 45.5 kB
Release files / netpbmfile-2026.7.25.tar.gz
| Download URL | netpbmfile-2026.7.25.tar.gz |
|---|---|
| Size | 31.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7e8556b0a4507ef062158a2ae26a93e1e7e9419530c30d209ce5474e68ee4e6e
|
|
BLAKE2b-256 checksum How to use checksums |
21f46a7af6a72cad868fcfe40ed5a13b1216b230b04ef454f4da7249d2308c0e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.6
|
Release files / netpbmfile-2026.7.25-py3-none-any.whl
| Download URL | netpbmfile-2026.7.25-py3-none-any.whl |
|---|---|
| Size | 14.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d14d90ec0c17a223e3732f16a190b8681b3801993e6bbb33a1d3dfcae4f2448d
|
|
BLAKE2b-256 checksum How to use checksums |
ef6ce7b55367f35b35c7cda412a48cdf4767c20d23b58ef7c03265f329b1c312
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.6
|