Skip to content

Latest commit

 

History

History
104 lines (78 loc) · 2.73 KB

tpl.readme.md

File metadata and controls

104 lines (78 loc) · 2.73 KB

About

{{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}}

Installation

{{pkg.install}}

{{pkg.size}}

Dependencies

{{pkg.deps}}

{{repo.examples}}

API

{{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"
        ]
    )
);