import { image } from "@kit.ImageKit"; import { http } from "@kit.NetworkKit"; import { HXLog } from "biz_common"; import { BusinessError } from "@kit.BasicServicesKit"; /** * author : liuqingliang@myhexin.com * time : created on 2026/6/1 * desc : 网络图片加载 */ const TAG = 'ImageLoader' export class ImageLoader { static load(imgUrl: string, onLoadFailed: (errMsg: string) => void, onResourceReady: (img: image.PixelMap) => void) { try { const httpRequest = http.createHttp() httpRequest.request(imgUrl).then(async (response) => { if (response.responseCode === 200) { const arrayBuffer = response.result as ArrayBuffer const imageSource = image.createImageSource(arrayBuffer) try { let img = imageSource.createPixelMapSync() onResourceReady(img) } finally { await imageSource.release() } } else { onLoadFailed(`ImageLoader load request failed. responseCode:${response.responseCode}`) } }).catch((err: Error) => { onLoadFailed(err.message) HXLog.e(TAG, JSON.stringify(err)) }).finally(() => { httpRequest.destroy() }) } catch (e) { const err = e as BusinessError HXLog.e(TAG, `ImageLoader load failed. msg:${err.message}`) onLoadFailed(err.message) } } static async loadSync(imgUrl: string): Promise { let img: image.PixelMap | null = null let imageSource: image.ImageSource | null = null try { const httpRequest = http.createHttp() try { const response: http.HttpResponse = await httpRequest.request(imgUrl) if (response.responseCode === 200) { const arrayBuffer = response.result as ArrayBuffer imageSource = image.createImageSource(arrayBuffer) img = imageSource.createPixelMapSync() } } catch (e) { const err = e as BusinessError HXLog.e(TAG, `ImageLoader load failed. msg:${err.message}`) } finally { httpRequest.destroy() } } catch (e) { const err = e as BusinessError HXLog.e(TAG, `ImageLoader load failed. msg:${err.message}`) } finally { if (imageSource) { imageSource.release() } } return img } }