{{pkg.description}}
This package can read & write binary
NetPBM image formats from byte
arrays/buffers to
@thi.ng/pixel
pixel buffers (aka PackedBuffer
).
Source format | Destination format | Rec. file extension(1) |
---|---|---|
1 bit | GRAY8 (2) |
.pbm |
2-8 bit grayscale | GRAY8 |
.pgm |
9-16 bit grayscale | GRAY16 |
.pgm |
24 bit RGB | ARGB8888 |
.ppm |
(1) no relevance to actual parse/export logic (2) currently no support for actual 1-bit pixel buffers
Furthermore the parseHeader()
function can be used to just extract image type,
size and other meta data (from comments), without parsing the full image.
{{meta.status}}
{{repo.supportPackages}}
{{repo.relatedPackages}}
{{meta.blogPosts}}
{{pkg.install}}
{{pkg.size}}
{{pkg.deps}}
{{repo.examples}}
{{pkg.docs}}
import * as pbm from "@thi.ng/pixel-io-netpbm";
import * as fs "node:fs";
const src = fs.readFileSync("a.pbm");
// <Buffer 50 34 0a 23 20 67 65 6e 65 72 61 74 65 64 20 62 79...>
// parse image header data
// P4 type => 1bit bitmap
pbm.parseHeader(src)
// {
// type: 'P4',
// width: 12,
// height: 8,
// max: undefined,
// start: 47,
// comments: [ 'generated by @thi.ng/pixel-io-netpbm' ]
// }
const img = pbm.read(src);
// IntBuffer {
// width: 12,
// height: 8,
// format: [Object],
// data: Uint8Array(96) [
// 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
// 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 0, 255,
// 255, 255, 0, 0, 0, 0, 255, 255, 255, 0, 0, 255,
// 255, 0, 0, 255, 255, 0, 0, 255, 0, 0, 0, 255,
// 255, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 255,
// 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255,
// 255, 0, 0, 255, 255, 0, 0, 255, 255, 255, 0, 255,
// 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255
// ]
// }
// convert to RGB image and export w/ additional meta data
// (will be stored in PBM header comments)
fs.writeFileSync(
"a-rgb.ppm",
pbm.asPPM(
img.as(RGB888),
[
"@prefix dc: http://purl.org/dc/terms/",
"dc:created 2021-02-08",
"dc:creator toxi"
]
)
);