Add a call-out to Web Codecs API

This commit is contained in:
Surma
2021-05-18 19:53:39 +01:00
parent 10c5082499
commit eb8204d69b
3 changed files with 60 additions and 1 deletions

View File

@@ -0,0 +1,26 @@
import { drawableToImageData } from 'client/lazy-app/util';
const hasImageDecoder = typeof ImageDecoder !== 'undefined';
export async function isTypeSupported(mimeType: string): Promise<boolean> {
if (!hasImageDecoder) {
return false;
}
return ImageDecoder.isTypeSupported(mimeType);
}
export async function decode(
blob: Blob | File,
mimeType: string,
): Promise<ImageData> {
if (!hasImageDecoder) {
throw Error(
`This browser does not support ImageDecoder. This function should not have been called.`,
);
}
const decoder = new ImageDecoder({
type: mimeType,
// Non-obvious way to turn an Blob into a ReadableStream
data: new Response(blob).body!,
});
const result = await decoder.decode();
return drawableToImageData(result.image);
}