HarmonyOS鸿蒙Next中怎么将一个网络图片生成ArrayBuffer

HarmonyOS鸿蒙Next中怎么将一个网络图片生成ArrayBuffer

 
3 回复

可以参考下这个代码:

http.createHttp().request(url,
  {
    method: http.RequestMethod.GET,
    connectTimeout: 60000,
    readTimeout: 60000
  },
  async (error: BusinessError, data: http.HttpResponse) => {
    if (error) {
      console.error(`http reqeust failed with. Code: ${error.code}, message: ${error.message}`);
    } else {
      if (ResponseCode.ResponseCode.OK === data.responseCode) {
        let imageBuffer: ArrayBuffer = data.result as ArrayBuffer;
        try {
          // 获取相册路径
          const context = getContext(this);
          let helper = photoAccessHelper.getPhotoAccessHelper(context);
          let uri = await helper.createAsset(photoAccessHelper.PhotoType.IMAGE, 'jpg')
          let file = await fs.open(uri, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE)
          // 写入文件
          await fs.write(file.fd, imageBuffer);
          // 关闭文件
          await fs.close(file.fd);
        } catch (error) {
          console.error("error is " + JSON.stringify(error))
        }
      } else {
        console.error("error occurred when image downloaded!")
      }
    }
  }
)

更多关于HarmonyOS鸿蒙Next中怎么将一个网络图片生成ArrayBuffer的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,你可以使用@ohos.net.http模块来下载网络图片,并将其转换为ArrayBuffer。以下是一个简单的示例代码:

import http from '@ohos.net.http';

async function downloadImageToArrayBuffer(url: string): Promise<ArrayBuffer> {
    let httpRequest = http.createHttp();
    let response = await httpRequest.request(url, {
        method: http.RequestMethod.GET,
    });
    if (response.responseCode === 200) {
        let arrayBuffer = await response.result.arrayBuffer();
        return arrayBuffer;
    } else {
        throw new Error(`Failed to download image: ${response.responseCode}`);
    }
}

// 使用示例
let imageUrl = 'https://example.com/image.png';
downloadImageToArrayBuffer(imageUrl).then(arrayBuffer => {
    console.log('Image downloaded and converted to ArrayBuffer');
}).catch(error => {
    console.error('Error:', error);
});

这段代码首先使用http.createHttp()创建一个HTTP请求对象,然后通过request方法发起GET请求下载图片。如果请求成功(响应码为200),则通过response.result.arrayBuffer()将图片数据转换为ArrayBuffer

注意,@ohos.net.http模块是鸿蒙系统提供的网络请求模块,可以用于处理HTTP请求。

在HarmonyOS鸿蒙Next中,你可以使用fetch API获取网络图片,并通过ArrayBuffer进行处理。以下是一个示例代码:

fetch('https://example.com/image.png')
  .then(response => response.arrayBuffer())
  .then(arrayBuffer => {
    console.log(arrayBuffer); // 处理ArrayBuffer
  })
  .catch(error => {
    console.error('Error fetching the image:', error);
  });

这段代码通过fetch获取图片资源,然后使用response.arrayBuffer()将其转换为ArrayBuffer。你可以根据需要对ArrayBuffer进行进一步处理。

回到顶部