Spaces:
Build error
Build error
File size: 1,247 Bytes
75fefa7 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
import compressorConfig from "@/public/compressor.json";
const avifConfig = compressorConfig.configs.find(
(c) => c.extension === "avif",
)!;
const webpConfig = compressorConfig.configs.find(
(c) => c.extension === "webp",
)!;
export async function getImageSrc(src: string) {
const BASE_SRC = "/assets/";
if (await supportsEncode()) {
return `${BASE_SRC}${src}_q${avifConfig.quality}@${avifConfig.scale}x.avif`;
}
return `${BASE_SRC}${src}_q${webpConfig.quality}@${webpConfig.scale}x.webp`;
}
let promise: Promise<boolean> | null = null;
async function supportsEncode() {
if (promise) return promise;
const avifData =
"data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUEAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABYAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgSAAAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB5tZGF0EgAKBzgADlAgIGkyCR/wAABAAACvcA==";
promise = fetch(avifData)
.then((r) => r.blob())
.then((b) => createImageBitmap(b))
.then(() => true)
.catch(() => false);
return promise;
}
|