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
JavaScript
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