HarmonyOS 鸿蒙Next 如何根据图片url获取已加载过缓存在本地的图片image.PixelMap

发布于 1周前 作者 yibo5220 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 如何根据图片url获取已加载过缓存在本地的图片image.PixelMap

使用Image组件加载的图片是有缓存的,那么如何根据图片url获取这个缓存呢?

6 回复
    // 通过uri创建图片源实例。

      const imageSource: image.ImageSource = image.createImageSource(uri);

      // 通过属性创建PixelMap

      PixelMap= await imageSource.createPixelMap()

看了下,image.createImageSource(uri); uri 图片路径,当前仅支持应用沙箱路径。希望的是能通过网络图片的url, 去获取缓存中的图片

找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:https://www.bilibili.com/video/BV1S4411E7LY/?p=17

思路 http request请求图片地址 返回的数据中有图片的array buffer 通过arraybuffer转pixelmap

嗯 就是想着缓存里有,优先使用缓存里有的。如果是内存缓存里有,那样获取更快些。

在HarmonyOS鸿蒙Next系统中,如果你需要根据图片的URL获取已加载并缓存在本地的图片PixelMap,通常你需要通过以下步骤实现:

  1. 图片缓存管理:首先,确保你的应用具有一个图片缓存机制。这可以通过第三方库或自行实现的缓存策略来完成,如使用内存缓存和磁盘缓存来存储已下载的图片。

  2. 检查缓存:在尝试获取PixelMap之前,先检查本地缓存中是否已存在该URL对应的图片。这通常涉及读取磁盘缓存或内存缓存。

  3. 加载PixelMap:如果图片存在于缓存中,你需要从缓存路径加载图片并转换为PixelMap。可以使用ImageDecoder类来解码缓存中的图片文件,然后将其转换为PixelMap对象。

  4. 处理异常:在加载过程中,要处理可能发生的异常,如文件不存在、解码失败等。

示例代码片段(假设已有缓存路径):

String cachePath = "path/to/cached/image";
ImageDecoder decoder = ImageDecoder.createDecoder(this, Uri.parse(cachePath));
decoder.decodeToBitmap(new DecodeToBitmapCallback() {
    @Override
    public void onSuccess(Bitmap bitmap) {
        PixelMap pixelMap = PixelMap.create(bitmap);
        // 使用pixelMap
    }
    @Override
    public void onError(ImageDecoder.ErrorResult errorResult) {
        // 处理错误
    }
});

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部