## Usage ```js
npm install xbrz_wasmjsimport init, { upscale_image_raw, get_memory } from "xbrz_wasm";
await init();
const canvas = new OffscreenCanvas(0, 0);
const context2d = canvas.getContext("2d", {
performance: "high-performance",
willReadFrequently: true,
});
/**
* Upscales an ImageData object using WebAssembly and writes it back to OffscreenCanvas.
* @param {ImageData} imgd
* @param {number} scale
* @returns {ImageData}
*/
function upscale(imgd, scale) {
const factor = Math.max(1, Math.min(6, Math.round(scale)));
canvas.width = imgd.width * factor;
canvas.height = imgd.height * factor;
const { ptr, len } = upscale_image_raw(
imgd.data,
imgd.width,
imgd.height,
factor
);
const wasmMemory = new Uint8ClampedArray(get_memory().buffer);
const resultView = wasmMemory.subarray(ptr, ptr + len);
const imageData = new ImageData(resultView, canvas.width, canvas.height);
context2d.putImageData(imageData, 0, 0);
return context2d.getImageData(0, 0, canvas.width, canvas.height);
}
``Huge thanks to: https://docs.rs/crate/xbrz-rs/latest (GNU General Public License v3) Perfectly working for pixagram.io!