import { isBlob } from "../../bit" /** * 把 Blob 和 ImageData 转换为一个可以在 canvas 绘制的内容 * ImageBitmap 优先,如果不兼容,则转换为 HTMLImageElement */ export async function toDrawable(imageSrc: Blob | ImageData): Promise { if (isBlob(imageSrc)) { if (!("createImageBitmap" in window)) { return createImageBitmapPolyfill(imageSrc) } else { return createImageBitmap(imageSrc) } } else { return createImageBitmap(imageSrc) } } function createImageBitmapPolyfill(blob: Blob) { return new Promise((resolve, reject) => { let img = document.createElement("img") img.addEventListener("load", function () { resolve(this) }) img.src = URL.createObjectURL(blob) }) }