mirror of
https://github.com/GoogleChromeLabs/squoosh.git
synced 2025-11-14 01:37:26 +00:00
20 lines
559 B
TypeScript
20 lines
559 B
TypeScript
import qoiDecoder, { QOIModule } from 'codecs/qoi/dec/qoi_dec';
|
|
import { initEmscriptenModule, blobToArrayBuffer } from 'features/worker-utils';
|
|
|
|
let emscriptenModule: Promise<QOIModule>;
|
|
|
|
export default async function decode(blob: Blob): Promise<ImageData> {
|
|
if (!emscriptenModule) {
|
|
emscriptenModule = initEmscriptenModule(qoiDecoder);
|
|
}
|
|
|
|
const [module, data] = await Promise.all([
|
|
emscriptenModule,
|
|
blobToArrayBuffer(blob),
|
|
]);
|
|
|
|
const result = module.decode(data);
|
|
if (!result) throw new Error('Decoding error');
|
|
return result;
|
|
}
|