Note
This is one of 199 standalone projects, maintained as part of the @thi.ng/umbrella monorepo and anti-framework.
🚀 Please help me to work full-time on these projects by sponsoring me on GitHub. Thank you! ❤️
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
ESM import:
import * as pfm from "@thi.ng/pixel-io-pfm";
Browser ESM import:
<script type="module" src="https://esm.run/@thi.ng/pixel-io-pfm"></script>
For Node.js REPL:
const pfm = await import("@thi.ng/pixel-io-pfm");
Package sizes (brotli'd, pre-treeshake): ESM: 747 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 "node:fs";
// create 2x2 image
const img = intBuffer(2, 2, RGB888);
// set all 4 pixels (in order: red, green, blue, yellow)
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 - 2024 Karsten Schmidt // Apache License 2.0