0.2.0 • Published 1 year ago

hdr.js v0.2.0

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

hdr.js

RGBE(.hdr) file reader/writer.

RGBE(.hdr) file viewer

Install

npm install --save hdr.js

Usage

Load RGBE(.hdr) file

HDRjs
  .load(url)
  .then(result => {
    console.log(result);
  })
  .catch(message => {
    console.error(message)
  });

Save RGBE(.hdr) file to disk

// Construct rgb float32 data
const width = 10;
const height = 10;
const rgbFloat = new Float32Array(width * height * 3);
for (let y = 0; y < height; y++) {
  for (let x = 0; x < width; x++) {
    const i = (y * width + x) * 3;
    rgbFloat[i + 0] = Math.random();
    rgbFloat[i + 1] = Math.random();
    rgbFloat[i + 2] = Math.random();
  }
}

const saved = HDRjs.save(rgbFloat, width, height, 'filename');
if (!saved) {
  // error
}

Read float point data from RGBE(.hdr) file buffer

fetch(url)
  .then(r => r.arrayBuffer())
  .then(buf => {
    const rgbe = new Uint8Array(buf);
    const result = HDRjs.read(rgbe);
    if (typeof result === 'string') {
      // error
    } else {
      const { rgbFloat, width, height } = result;
    }
  });

Write float point data to RGBE(.hdr) file buffer

// Construct rgb float32 data
const width = 10;
const height = 10;
const rgbFloat = new Float32Array(width * height * 3);
for (let y = 0; y < height; y++) {
  for (let x = 0; x < width; x++) {
    const i = (y * width + x) * 3;
    rgbFloat[i + 0] = Math.random();
    rgbFloat[i + 1] = Math.random();
    rgbFloat[i + 2] = Math.random();
  }
}

// Write to uint8
const hdrFile = HDRjs.write(width, height, rgbFloat);

// Download
const a = document.createElement('a');
const url = URL.createObjectURL(new Blob([ hdrFile ]));
a.href = url;
a.download = 'output.hdr';
a.click();

Compress 96 bits float RGB data to 32 bits rgbe

const float = new Float32Array([0.3, 0.02, 0.1]);
const rgbe = new Uint8Array(4);
float2rgbe(float, rgbe);
// rgbe is [153, 10, 51, 127]

Decompress 32 bits rgbe to 96 bits float RGB data

const rgbe = new Uint8Array([153, 10, 51, 127])
const float = new Float32Array(3);
rgbe2float(rgbe, float);
// float is [ 0.298828125, 0.01953125, 0.099609375 ]
0.2.0

1 year ago

0.1.7

2 years ago

0.1.6

2 years ago

0.1.5

2 years ago

0.1.4

2 years ago

0.1.3

2 years ago

0.1.2

2 years ago

0.1.1

2 years ago

0.1.0

2 years ago