54 lines
1.2 KiB
JavaScript
54 lines
1.2 KiB
JavaScript
export async function loadImage({
|
||
canvas,
|
||
src,
|
||
}) {
|
||
let result = null;
|
||
if (!src || !canvas) {
|
||
return result;
|
||
}
|
||
|
||
// #ifdef MP
|
||
// 小程序环境:使用 canvas.createImage
|
||
if (canvas.createImage) {
|
||
result = new Promise((resolve, reject) => {
|
||
const img = canvas.createImage();
|
||
// 必须先设置 onload 和 onerror,再设置 src
|
||
img.onload = () => resolve(img);
|
||
img.onerror = (err) => {
|
||
console.error('创建图片对象失败:', err);
|
||
reject(err);
|
||
};
|
||
img.src = src;
|
||
});
|
||
}
|
||
// #endif
|
||
|
||
// #ifdef APP-PLUS
|
||
result = new Promise((resolve) => {
|
||
uni.getImageInfo({
|
||
src,
|
||
success: (res) => {
|
||
const imgPath = res.path; // 本地临时路径
|
||
resolve(imgPath);
|
||
},
|
||
});
|
||
});
|
||
// #endif
|
||
|
||
// #ifdef H5
|
||
// H5 环境:创建 Image 对象(参考 TSX 实现)
|
||
result = new Promise((resolve, reject) => {
|
||
const img = new Image();
|
||
img.crossOrigin = 'anonymous';
|
||
img.onload = () => resolve(img);
|
||
img.onerror = (err) => {
|
||
console.error('图标加载失败:', err);
|
||
reject(err);
|
||
};
|
||
img.src = src;
|
||
});
|
||
// #endif
|
||
|
||
return result;
|
||
}
|