Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 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 | 13x | export async function loadImage(file: File): Promise<HTMLImageElement> { const image = new Image(); image.src = URL.createObjectURL(file); try { await awaitImageLoad(image); return image; } finally { URL.revokeObjectURL(image.src); } } async function awaitImageLoad(image: HTMLImageElement): Promise<void> { if (image.complete && image.naturalWidth !== 0) return; // already loaded await new Promise<void>((resolve, reject) => { const listener = (event: ErrorEvent | Event) => { image.removeEventListener('load', listener); image.removeEventListener('error', listener); if (event instanceof ErrorEvent) { reject('Image load error'); } else { resolve(); } }; image.addEventListener('load', listener); image.addEventListener('error', listener); }); } |