<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>TinyEXR to Canvas</title> <script src="tinyexr.js"></script> <style> </style> </head> <body> <canvas id="imgCanvas"></canvas> </body> <script> let canvas = document.getElementById('imgCanvas'); let ctx = canvas.getContext('2d'); fetch("./asakusa.exr").then(response => { return response.arrayBuffer(); }).then(arrayBuffer => { // let exrImg = parseExr(arrayBuffer); let data = new Uint8Array(arrayBuffer); let exrImg = new Module.EXRLoader(data); canvas.width = exrImg.width(); canvas.height = exrImg.height(); let imageArray = exrImg.getBytes().map(num => { // Convert values to 0-255 range and apply gamma curve return Math.pow(num, 0.44) * 256; }); let image8Array = new Uint8ClampedArray(imageArray); let imageData = new ImageData(image8Array, exrImg.width(), exrImg.height()); ctx.putImageData(imageData, 0, 0); }); </script> </html>