UNPKG

nanogl-gltf

Version:
31 lines (30 loc) 1.27 kB
//https://developers.google.com/speed/webp/faq#in_your_own_javascript const kTestImages = { lossy: "UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA", lossless: "UklGRhoAAABXRUJQVlA4TA0AAAAvAAAAEAcQERGIiP4HAA==", alpha: "UklGRkoAAABXRUJQVlA4WAoAAAAQAAAAAAAAAAAAQUxQSAwAAAARBxAR/Q9ERP8DAABWUDggGAAAABQBAJ0BKgEAAQAAAP4AAA3AAP7mtQAAAA==", animation: "UklGRlIAAABXRUJQVlA4WAoAAAASAAAAAAAAAAAAQU5JTQYAAAD/////AABBTk1GJgAAAAAAAAAAAAAAAAAAAGQAAABWUDhMDQAAAC8AAAAQBxAREYiI/gcA" }; async function _check_webp_feature(feature) { return new Promise((resolve, reject) => { const img = new Image(); img.onload = () => resolve((img.width > 0) && (img.height > 0)); img.onerror = () => resolve(false); img.src = "data:image/webp;base64," + kTestImages[feature]; }); } const _testResultPromise = Promise.all([ _check_webp_feature('lossy'), _check_webp_feature('lossless'), _check_webp_feature('alpha'), _check_webp_feature('animation'), ]).then((results) => { return results.every(v => v); }); /** * Check if the browser supports WebP image format. * Returns true only if lossy, lossless, alpha and animated WebP are supported. */ export function webpSupport() { return _testResultPromise; }