UNPKG

minigame-std

Version:

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

109 lines (108 loc) 2.76 kB
import { Ok } from "happy-rusty"; import { readBlobFile } from "happy-opfs"; //#region src/macros/env.ts /** * 如果在小游戏环境中返回 true,否则返回 false。 */ const IS_MINA = __MINIGAME_STD_MINA__; //#endregion //#region src/std/image/mina_image.ts /** * @internal * 小游戏平台的图片创建实现。 */ /** * 从 URL 创建图片对象。 * @param url - 图片的 URL 地址。 * @returns 返回小游戏平台的图片对象。 */ function createImageFromUrl$2(url) { const img = wx.createImage(); img.src = url; return img; } /** * 从本地文件路径创建图片对象。 * @param filePath - 图片文件的本地路径。 * @returns 返回小游戏平台的图片对象。 */ function createImageFromFile$2(filePath) { return createImageFromUrl$2(filePath); } //#endregion //#region src/std/image/web_image.ts /** * @internal * Web 平台的图片创建实现。 */ /** * 从 URL 创建图片元素。 * @param url - 图片的 URL 地址。 * @returns 返回 HTML 图片元素。 */ function createImageFromUrl$1(url) { const img = new Image(); img.src = url; return img; } /** * 从本地文件路径创建图片元素。 * @param filePath - 图片文件的本地路径。 * @returns 返回包含 HTML 图片元素的异步结果。 */ async function createImageFromFile$1(filePath) { return (await readBlobFile(filePath)).andThen((blob) => { const url = URL.createObjectURL(blob); const img = new Image(); img.src = url; img.addEventListener("load", () => { URL.revokeObjectURL(url); }); img.addEventListener("error", () => { URL.revokeObjectURL(url); }); return Ok(img); }); } //#endregion //#region src/std/image/mod.ts /** * 图片处理模块,提供从 URL 或文件创建图片的功能。 * @module image */ /** * 从URL创建图片。 * @param url - 图片URL。 * @returns Image对象。 * @since 1.7.0 * @example * ```ts * const img = createImageFromUrl('https://example.com/image.png'); * img.onload = () => { * console.log('图片加载完成', img.width, img.height); * }; * ``` */ function createImageFromUrl(url) { return (IS_MINA ? createImageFromUrl$2 : createImageFromUrl$1)(url); } /** * 从文件创建图片。 * @param filePath - 文件路径。 * @returns 异步的Image对象。 * @since 1.7.0 * @example * ```ts * const result = await createImageFromFile('/path/to/image.png'); * if (result.isOk()) { * const img = result.unwrap(); * console.log('图片尺寸:', img.width, 'x', img.height); * } * ``` */ function createImageFromFile(filePath) { return IS_MINA ? Promise.resolve(Ok(createImageFromFile$2(filePath))) : createImageFromFile$1(filePath); } //#endregion export { createImageFromFile, createImageFromUrl }; //# sourceMappingURL=image.mjs.map