UNPKG

minigame-std

Version:

Cross-platform standard library for WeChat minigame and web browsers with unified APIs for crypto, fs, fetch, storage, and more.

1 lines 4.74 kB
{"version":3,"file":"image.cjs","names":[],"sources":["../src/macros/env.ts","../src/std/image/mina_image.ts","../src/std/image/web_image.ts","../src/std/image/mod.ts"],"sourcesContent":["/**\n * @internal\n * 小游戏环境宏模块。\n */\n\n/**\n * 小游戏环境宏。\n *\n * 可通过打包工具在 build 时修改,如 esbuild webpack vite 等。\n */\ndeclare const __MINIGAME_STD_MINA__: boolean;\n\n/**\n * 如果在小游戏环境中返回 true,否则返回 false。\n */\nexport const IS_MINA = __MINIGAME_STD_MINA__;\n","/**\n * @internal\n * 小游戏平台的图片创建实现。\n */\n\n/**\n * 从 URL 创建图片对象。\n * @param url - 图片的 URL 地址。\n * @returns 返回小游戏平台的图片对象。\n */\nexport function createImageFromUrl(url: string): WechatMinigame.Image {\n const img = wx.createImage();\n img.src = url;\n\n return img;\n}\n\n/**\n * 从本地文件路径创建图片对象。\n * @param filePath - 图片文件的本地路径。\n * @returns 返回小游戏平台的图片对象。\n */\nexport function createImageFromFile(filePath: string): WechatMinigame.Image {\n return createImageFromUrl(filePath);\n}","/**\n * @internal\n * Web 平台的图片创建实现。\n */\n\nimport { readBlobFile } from 'happy-opfs';\nimport { Ok, type AsyncIOResult } from 'happy-rusty';\n\n/**\n * 从 URL 创建图片元素。\n * @param url - 图片的 URL 地址。\n * @returns 返回 HTML 图片元素。\n */\nexport function createImageFromUrl(url: string): HTMLImageElement {\n const img = new Image();\n img.src = url;\n\n return img;\n}\n\n/**\n * 从本地文件路径创建图片元素。\n * @param filePath - 图片文件的本地路径。\n * @returns 返回包含 HTML 图片元素的异步结果。\n */\nexport async function createImageFromFile(filePath: string): AsyncIOResult<HTMLImageElement> {\n const readRes = await readBlobFile(filePath);\n\n return readRes.andThen(blob => {\n const url = URL.createObjectURL(blob);\n\n const img = new Image();\n img.src = url;\n\n img.addEventListener('load', () => {\n URL.revokeObjectURL(url);\n });\n img.addEventListener('error', () => {\n URL.revokeObjectURL(url);\n });\n\n return Ok(img);\n });\n}","/**\n * 图片处理模块,提供从 URL 或文件创建图片的功能。\n * @module image\n */\nimport { Ok, type AsyncIOResult } from 'happy-rusty';\nimport { IS_MINA } from '../../macros/env.ts';\nimport {\n createImageFromFile as minaCreateImageFromFile,\n createImageFromUrl as minaCreateImageFromUrl,\n} from './mina_image.ts';\nimport {\n createImageFromFile as webCreateImageFromFile,\n createImageFromUrl as webCreateImageFromUrl,\n} from './web_image.ts';\n\n/**\n * 从URL创建图片。\n * @param url - 图片URL。\n * @returns Image对象。\n * @since 1.7.0\n * @example\n * ```ts\n * const img = createImageFromUrl('https://example.com/image.png');\n * img.onload = () => {\n * console.log('图片加载完成', img.width, img.height);\n * };\n * ```\n */\nexport function createImageFromUrl(url: string): HTMLImageElement | WechatMinigame.Image {\n return (IS_MINA ? minaCreateImageFromUrl : webCreateImageFromUrl)(url);\n}\n\n/**\n * 从文件创建图片。\n * @param filePath - 文件路径。\n * @returns 异步的Image对象。\n * @since 1.7.0\n * @example\n * ```ts\n * const result = await createImageFromFile('/path/to/image.png');\n * if (result.isOk()) {\n * const img = result.unwrap();\n * console.log('图片尺寸:', img.width, 'x', img.height);\n * }\n * ```\n */\nexport function createImageFromFile(filePath: string): AsyncIOResult<HTMLImageElement | WechatMinigame.Image> {\n return IS_MINA\n ? Promise.resolve(Ok(minaCreateImageFromFile(filePath)))\n : webCreateImageFromFile(filePath);\n}"],"mappings":";;;;;;;AAeA,MAAa,UAAU;;;;;;;;;;;;ACLvB,SAAgB,qBAAmB,KAAmC;CAClE,MAAM,MAAM,GAAG,YAAY;CAC3B,IAAI,MAAM;CAEV,OAAO;AACX;;;;;;AAOA,SAAgB,sBAAoB,UAAwC;CACxE,OAAO,qBAAmB,QAAQ;AACtC;;;;;;;;;;;;ACXA,SAAgB,qBAAmB,KAA+B;CAC9D,MAAM,MAAM,IAAI,MAAM;CACtB,IAAI,MAAM;CAEV,OAAO;AACX;;;;;;AAOA,eAAsB,sBAAoB,UAAmD;CAGzF,QAAO,OAAA,GAAA,WAAA,aAAA,CAF4B,QAAQ,EAAA,CAE5B,SAAQ,SAAQ;EAC3B,MAAM,MAAM,IAAI,gBAAgB,IAAI;EAEpC,MAAM,MAAM,IAAI,MAAM;EACtB,IAAI,MAAM;EAEV,IAAI,iBAAiB,cAAc;GAC/B,IAAI,gBAAgB,GAAG;EAC3B,CAAC;EACD,IAAI,iBAAiB,eAAe;GAChC,IAAI,gBAAgB,GAAG;EAC3B,CAAC;EAED,QAAA,GAAA,YAAA,GAAA,CAAU,GAAG;CACjB,CAAC;AACL;;;;;;;;;;;;;;;;;;;;ACfA,SAAgB,mBAAmB,KAAsD;CACrF,QAAQ,UAAU,uBAAyB,qBAAA,CAAuB,GAAG;AACzE;;;;;;;;;;;;;;;AAgBA,SAAgB,oBAAoB,UAA0E;CAC1G,OAAO,UACD,QAAQ,SAAA,GAAA,YAAA,GAAA,CAAW,sBAAwB,QAAQ,CAAC,CAAC,IACrD,sBAAuB,QAAQ;AACzC"}