This project is part of the @thi.ng/umbrella monorepo and anti-framework.
Portable FloatMap image format support for @thi.ng/pixel.
Similar to the NetPBM formats, the Portable FloatMap image format is extremely simple, uncompressed and mainly interesting for development purposes & interchange (e.g. for use with Intel's Open Image Denoise CLI tools).
STABLE - used in production
Search or submit any issues for this package
yarn add @thi.ng/pixel-io-pfm
ES module import:
<script type="module" src="https://cdn.skypack.dev/@thi.ng/pixel-io-pfm"></script>
For Node.js REPL:
const pixelIoPfm = await import("@thi.ng/pixel-io-pfm");
Package sizes (brotli'd, pre-treeshake): ESM: 768 bytes
The package only provides 2 functions:
asPFM(img: IntBuffer | FloatBuffer, littleEndian?: boolean, linearRGB?: boolean): Uint8Array
: Serializes an image to PFM and returns result as byte arrayreadPFM(buf: Uint8Array, linearRGB?: boolean): FloatBuffer
: Parses byte array as PFM image and returns it asFloatBuffer
import { intBuffer, RGB888 } from "@thi.ng/pixel";
import { asPFM } from "@thi.ng/pixel-io-pfm";
import { writeFileSync } from "fs";
// create 2x2 image
const img = intBuffer(2, 2, RGB888);
// set pixel data (R,G,B,Y)
img.data.set([0xff0000, 0x00ff00, 0x0000ff, 0xffff00]);
// serialize image to PFM byte array and write to file
// (format conversion to FLOAT_RGB is done automatically & non-destructively)
writeFileSync("export/rgby.pfm", asPFM(img));
If this project contributes to an academic publication, please cite it as:
@misc{thing-pixel-io-pfm,
title = "@thi.ng/pixel-io-pfm",
author = "Karsten Schmidt",
note = "https://thi.ng/pixel-io-pfm",
year = 2023
}
© 2023 Karsten Schmidt // Apache License 2.0