aquavox/packages/core/graphics/blob2imageData.ts

18 lines
837 B
TypeScript

export default function blobToImageData(blob: Blob): Promise<ImageData> {
return new Promise((resolve, reject) => {
const reader = new FileReader();
reader.onload = (event) => {
const arrayBuffer = event.target?.result as ArrayBuffer;
const dataView = new DataView(arrayBuffer);
const width = dataView.getUint32(0, true); // Read width from little-endian bytes
const height = dataView.getUint32(4, true); // Read height from little-endian bytes
const byteArray = new Uint8ClampedArray(arrayBuffer, 8); // Skip the header
resolve(new ImageData(byteArray, width, height));
};
reader.onerror = () => {
reject(new Error("Failed to read Blob as ArrayBuffer"));
};
reader.readAsArrayBuffer(blob);
});
}