{"version":3,"file":"image-loader.cjs","sources":["../../../src/utils/image-loader.js"],"sourcesContent":["import fs from 'fs-extra';\r\nimport path from 'path';\r\nimport { fileURLToPath } from 'url';\r\n\r\nconst __filename = fileURLToPath(import.meta.url);\r\nconst __dirname = path.dirname(__filename);\r\n\r\n/**\r\n * 图片加载器\r\n */\r\nexport class ImageLoader {\r\n  constructor() {\r\n    this.cache = new Map();\r\n  }\r\n\r\n  /**\r\n   * 加载图片\r\n   * @param {string} src - 图片路径或URL\r\n   * @returns {Promise<Buffer>} 图片数据\r\n   */\r\n  async load(src) {\r\n    if (this.cache.has(src)) {\r\n      return this.cache.get(src);\r\n    }\r\n\r\n    try {\r\n      let imageData;\r\n      \r\n      // 如果是URL，需要下载\r\n      if (src.startsWith('http://') || src.startsWith('https://')) {\r\n        const response = await fetch(src);\r\n        if (!response.ok) {\r\n          throw new Error(`Failed to load image from URL: ${src}`);\r\n        }\r\n        const arrayBuffer = await response.arrayBuffer();\r\n        imageData = Buffer.from(arrayBuffer);\r\n      } else {\r\n        // 本地文件路径\r\n        const resolvedPath = path.isAbsolute(src) ? src : path.resolve(process.cwd(), src);\r\n        if (!(await fs.pathExists(resolvedPath))) {\r\n          throw new Error(`Image file not found: ${resolvedPath}`);\r\n        }\r\n        imageData = await fs.readFile(resolvedPath);\r\n      }\r\n\r\n      this.cache.set(src, imageData);\r\n      return imageData;\r\n    } catch (error) {\r\n      throw new Error(`Failed to load image: ${src}. ${error.message}`);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * 清除缓存\r\n   */\r\n  clearCache() {\r\n    this.cache.clear();\r\n  }\r\n\r\n  /**\r\n   * 获取图片信息（需要时可以实现）\r\n   */\r\n  async getImageInfo(src) {\r\n    // 这里可以集成 sharp 或其他图片处理库来获取尺寸等信息\r\n    // 暂时返回基本结构\r\n    return {\r\n      src,\r\n      width: 0,\r\n      height: 0,\r\n    };\r\n  }\r\n}\r\n\r\n// 单例实例\r\nexport const imageLoader = new ImageLoader();\r\n\r\n"],"names":["__filename","fileURLToPath"],"mappings":";;;;;;;AAIA,MAAMA,YAAU,GAAGC,iBAAa,CAAC,yQAAe,CAAC,CAAC;AAChC,IAAI,CAAC,OAAO,CAACD,YAAU,EAAE;AAC3C;AACA;AACA;AACA;AACO,MAAM,WAAW,CAAC;AACzB,EAAE,WAAW,GAAG;AAChB,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;AAC3B,EAAE,CAAC;AACH;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,IAAI,CAAC,GAAG,EAAE;AAClB,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AAC7B,MAAM,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACjC,IAAI,CAAC;AACL;AACA,IAAI,IAAI;AACR,MAAM,IAAI,SAAS,CAAC;AACpB;AACA;AACA,MAAM,IAAI,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;AACnE,QAAQ,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;AAC1C,QAAQ,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;AAC1B,UAAU,MAAM,IAAI,KAAK,CAAC,CAAC,+BAA+B,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AACnE,QAAQ,CAAC;AACT,QAAQ,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC;AACzD,QAAQ,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC7C,MAAM,CAAC,MAAM;AACb;AACA,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC;AAC3F,QAAQ,IAAI,EAAE,MAAM,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,EAAE;AAClD,UAAU,MAAM,IAAI,KAAK,CAAC,CAAC,sBAAsB,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;AACnE,QAAQ,CAAC;AACT,QAAQ,SAAS,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AACpD,MAAM,CAAC;AACP;AACA,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;AACrC,MAAM,OAAO,SAAS,CAAC;AACvB,IAAI,CAAC,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,MAAM,IAAI,KAAK,CAAC,CAAC,sBAAsB,EAAE,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACxE,IAAI,CAAC;AACL,EAAE,CAAC;AACH;AACA;AACA;AACA;AACA,EAAE,UAAU,GAAG;AACf,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;AACvB,EAAE,CAAC;AACH;AACA;AACA;AACA;AACA,EAAE,MAAM,YAAY,CAAC,GAAG,EAAE;AAC1B;AACA;AACA,IAAI,OAAO;AACX,MAAM,GAAG;AACT,MAAM,KAAK,EAAE,CAAC;AACd,MAAM,MAAM,EAAE,CAAC;AACf,KAAK,CAAC;AACN,EAAE,CAAC;AACH,CAAC;AACD;AACA;AACY,MAAC,WAAW,GAAG,IAAI,WAAW;;;;;"}