forked from external-repos/squoosh
* Add a serviceworker * rename + fix random extra character * Fixing worker typings * Fixing types properly this time. * Once of those rare cases where this matters. * Naming the things. * Move registration to the app (so we can use snackbar later) * Moving SW plugin later so it picks up things like HTML * MVP service worker * Two stage-service worker * Fix prerendering by conditionally awaiting Custom Elements polyfill. * Fix icon 404's * add doc comment to autoswplugin * Fix type
21 lines
650 B
TypeScript
21 lines
650 B
TypeScript
import { nativeDecode, sniffMimeType, canDecodeImage } from '../lib/util';
|
|
import Processor from './processor';
|
|
import webpDataUrl from 'url-loader!./tiny.webp';
|
|
|
|
const nativeWebPSupported = canDecodeImage(webpDataUrl);
|
|
|
|
export async function decodeImage(blob: Blob, processor: Processor): Promise<ImageData> {
|
|
const mimeType = await sniffMimeType(blob);
|
|
|
|
try {
|
|
if (mimeType === 'image/webp' && !(await nativeWebPSupported)) {
|
|
return await processor.webpDecode(blob);
|
|
}
|
|
|
|
// Otherwise, just throw it at the browser's decoder.
|
|
return await nativeDecode(blob);
|
|
} catch (err) {
|
|
throw Error("Couldn't decode image");
|
|
}
|
|
}
|