RGBE(.hdr) file reader/writer.
npm install --save hdr.js- Load RGBE(.hdr) file:
load(url: string): Promise<{width: number;height: number;rgbFloat: Float32Array;}>
- Save RGBE(.hdr) file to disk:
save(float: Float32Array,width: number,height: number,filename: string): boolean
- Read float point data from RGBE(.hdr) file buffer:
read(uint8: Uint8Array): string |{rgbFloat: Float32Array; width: number; height: number;}
- Write float point data to RGBE(.hdr) file buffer:
write(x: number,y: number,data: Float32Array): Uint8Array
- Compress 96 bits float RGB data to 32 bits rgbe:
float2rgbe(float: Float32Array,rgbe: Uint8Array)
- Decompress 32 bits rgbe to 96 bits float RGB data:
rgbe2float(rgbe: Uint8Array,float: Float32Array)
HDRjs.load(url).then(result=>{console.log(result);}).catch(message=>{console.error(message)});// Construct rgb float32 dataconstwidth=10;constheight=10;constrgbFloat=newFloat32Array(width*height*3);for(lety=0;y<height;y++){for(letx=0;x<width;x++){consti=(y*width+x)*3;rgbFloat[i+0]=Math.random();rgbFloat[i+1]=Math.random();rgbFloat[i+2]=Math.random();}}constsaved=HDRjs.save(rgbFloat,width,height,'filename');if(!saved){// error}fetch(url).then(r=>r.arrayBuffer()).then(buf=>{constrgbe=newUint8Array(buf);constresult=HDRjs.read(rgbe);if(typeofresult==='string'){// error}else{const{ rgbFloat, width, height }=result;}});// Construct rgb float32 dataconstwidth=10;constheight=10;constrgbFloat=newFloat32Array(width*height*3);for(lety=0;y<height;y++){for(letx=0;x<width;x++){consti=(y*width+x)*3;rgbFloat[i+0]=Math.random();rgbFloat[i+1]=Math.random();rgbFloat[i+2]=Math.random();}}// Write to uint8consthdrFile=HDRjs.write(width,height,rgbFloat);// Downloadconsta=document.createElement('a');consturl=URL.createObjectURL(newBlob([hdrFile]));a.href=url;a.download='output.hdr';a.click();constfloat=newFloat32Array([0.3,0.02,0.1]);constrgbe=newUint8Array(4);float2rgbe(float,rgbe);// rgbe is [153, 10, 51, 127]constrgbe=newUint8Array([153,10,51,127])constfloat=newFloat32Array(3);rgbe2float(rgbe,float);// float is [ 0.298828125, 0.01953125, 0.099609375 ]