HarmonyOS 鸿蒙Next 有直接把网络图片转为 image.ImageSource的API吗

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

HarmonyOS 鸿蒙Next 有直接把网络图片转为 image.ImageSource的API吗

有直接把网络图片转为 image.ImageSource的API吗

2 回复

您可以使用image.createImageSource接口创建图片源实例

参考链接如下:

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V13/js-apis-image-V13

目前没有将网络图片uri作为参数来创建imageSource的API,建议您先将网络图片下载到应用文件目录,再通过应用沙箱路径传入参数来创建imageSource

Demo如下:

// pages/xxx.ets

// 将网络资源文件下载到应用文件目录

//先在module.json5文件中配置ohos.permission.INTERNET权限

import common from '@ohos.app.ability.common';

import request from '@ohos.request';

import { BusinessError } from '@ohos.base';

import { image } from '@kit.ImageKit';

// 获取应用文件路径

let context = getContext(this) as common.UIAbilityContext;

let cacheDir = context.cacheDir;

function getImage(){

  try {

    request.downloadFile(context, {

      url: 'https://xxxx/xxxx.png',

      filePath: cacheDir + '/xxxx.png'

    }).then((downloadTask: request.DownloadTask) => {

      downloadTask.on('complete', () => {

        console.info('download complete');

        const path: string = context.cacheDir + "/xxxx.png";

        const imageSourceApi: image.ImageSource = image.createImageSource(path);

        console.info("succeeded to creat imageSource")

        imageSourceApi.getImageInfo(0, (error: BusinessError, imageInfo: image.ImageInfo) => {

          if (error) {

            console.error('getImageInfo failed.');

          } else {

            console.info('getImageInfo succeeded:'+`${JSON.stringify(imageInfo)}`);

          }

        })

      })

    }).catch((err: BusinessError) => {

      console.error(`Invoke downloadTask failed, code is ${err.code}, message is ${err.message}`);

    });

  } catch (error) {

    let err: BusinessError = error as BusinessError;

    console.error(`Invoke downloadFile failed, code is ${err.code}, message is ${err.message}`);

  }

}

@Entry

@Component

struct Index {

  @State message: string = ''

  build() {

    Row() {

      Column() {

        Text(this.message)

          .fontSize(50)

          .onClick(() => {

            getImage()

          })

      }.width(100)

    }.height(100)

  }

}

更多关于HarmonyOS 鸿蒙Next 有直接把网络图片转为 image.ImageSource的API吗的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


HarmonyOS 鸿蒙Next 提供了丰富的API接口用于处理图像和网络请求,但针对直接将网络图片转换为image.ImageSource的特定API,官方文档和现有资料中并未直接提及单一API能完成此操作。通常,这个过程需要分为两个步骤进行:

  1. 网络请求:首先,需要通过鸿蒙的网络请求API(如fetchxhr等)获取网络图片的二进制数据或Base64编码字符串。

  2. 图片解码:其次,利用鸿蒙的图片处理API(如BitmapFactory或其他图像解码工具),将获取到的图片数据解码为image.ImageSource对象。

由于鸿蒙系统的API设计鼓励开发者使用组件化和模块化的方式进行开发,因此直接转换网络图片到image.ImageSource可能涉及多个API的组合使用,而非单一API直接完成。

开发者可查阅鸿蒙官方文档,了解network模块和media模块的具体API,通过组合这些API实现所需功能。

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

回到顶部