- Notifications
You must be signed in to change notification settings - Fork0
RGBE(.hdr) file reader/writer
License
NotificationsYou must be signed in to change notification settings
bbbbx/hdr.js
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
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 ]
About
RGBE(.hdr) file reader/writer