UNPKG

@lancercomet/utils

Version:
67 lines (66 loc) 1.9 kB
/** * 加载图片. * * @param {string} url * @returns {Promise<HTMLImageElement>} */ function loadImage(url) { return new Promise(function (resolve, reject) { var image = new Image(); image.onload = function () { resolve(image); }; image.onerror = function () { reject(new Error('Failed to load image ' + url)); }; image.src = url; }); } /** * 使用 File 对象创建 HTMLImageElement. * File 必须为图片文件才能正常工作. * * @param {File} file 图片文件. * @returns {Promise<HTMLImageElement>} 图片节点. */ function createImageByFile(file) { var url = URL.createObjectURL(file); return loadImage(url); } /** * 通过图片创建 ImageData. * * @param {HTMLImageElement} image * @returns {ImageData} */ function createImageData(image) { var width = image.width, height = image.height; var canvas = document.createElement('canvas'); canvas.width = width; canvas.height = height; var context = canvas.getContext('2d'); context === null || context === void 0 ? void 0 : context.drawImage(image, 0, 0); return context === null || context === void 0 ? void 0 : context.getImageData(0, 0, width, height); } /** * 是否支持 WebP. * * @returns {boolean} */ function isSupportWebp() { // 某些 Android 浏览器不兹词 toDataURL. // SSR 环境下加入 try 进行容错. try { var canvas = document.createElement('canvas'); if (canvas.getContext && canvas.getContext('2d')) { return canvas.toDataURL('image/webp').indexOf('data:image/webp') === 0; } else { return false; } } catch (error) { return false; } } export { createImageByFile, createImageData, isSupportWebp, loadImage };