UNPKG

vuepress-plugin-photomap

Version:

VuePress2插件,用于在文章中插入照片地图组件,类似Apple相册的PhotoMap功能

63 lines (62 loc) 1.6 kB
/** * 图片加载工具函数 */ /** * 预加载图片并获取尺寸信息 */ export const preloadImage = (src) => { return new Promise((resolve, reject) => { const img = new Image(); img.crossOrigin = 'anonymous'; img.onload = () => { resolve({ src, alt: '', width: img.naturalWidth, height: img.naturalHeight }); }; img.onerror = () => { reject(new Error(`Failed to load image: ${src}`)); }; img.src = src; }); }; /** * 批量预加载图片 */ export const preloadImages = async (srcs) => { const promises = srcs.map(src => preloadImage(src)); return Promise.all(promises); }; /** * 检查图片URL是否有效 */ export const isValidImageUrl = (url) => { if (!url || typeof url !== 'string') return false; // 基本URL格式检查 try { new URL(url); } catch { // 可能是相对路径,检查是否以图片扩展名结尾 const imageExtensions = /\.(jpg|jpeg|png|gif|bmp|webp|svg)(\?.*)?$/i; return imageExtensions.test(url); } return true; }; /** * 获取图片的缩略图URL(如果支持) */ export const getThumbnailUrl = (url, size = 200) => { // 这里可以实现缩略图生成逻辑 // 例如集成第三方图片处理服务 return url; }; /** * 生成图片的唯一标识符 */ export const generateImageId = (src, alt) => { return btoa(encodeURIComponent(`${src}-${alt}`)).replace(/[^a-zA-Z0-9]/g, ''); };