网络图片转成base64格式字符串 HarmonyOS 鸿蒙Next

网络图片转成base64格式字符串 HarmonyOS 鸿蒙Next 有没有方案能将网络图片转化成base64格式字符串?

2 回复

兄弟,可以先将图片保存到沙箱路径 然后在获取沙箱下的图片将其转换成base64的格式:

let file = fs.openSync(uri, fs.OpenMode.READ_ONLY);
const imageSource: image.ImageSource = image.createImageSource(file.fd);
let opts: image.DecodingOptions = { editable: true }
let pixelMap = await imageResource.createPixelMap(opts);
// 转换成base64
const imagePackerApi: image.ImagePacker = image.createImagePacker();
let packOpts: image.PackingOption = { format: 'image/jpeg', quality: 100 };
imagePackerApi.packing(pixelMap, packOpts).then((data: ArrayBuffer) => {
  let buf: buffer.Buffer = buffer.from(data);
  this.base64 = 'data:image/jpeg;base64,' + buf.toString('base64', 0, buf.length);
  console.info('base64: ' + this.base64);
})

更多关于网络图片转成base64格式字符串 HarmonyOS 鸿蒙Next的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS(鸿蒙Next)中,将网络图片转换为Base64格式字符串可以通过以下步骤实现:

  1. 获取网络图片数据:使用HttpURLConnectionFetch API从网络获取图片的二进制数据。
  2. 将二进制数据转换为Base64字符串:使用Base64类或相关工具将获取到的二进制数据编码为Base64字符串。

具体代码示例(使用ArkTS):

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

async function convertImageToBase64(url: string): Promise<string> {
    let httpRequest = http.createHttp();
    let response = await httpRequest.request(url, {
        method: http.RequestMethod.GET,
        expectDataType: http.HttpDataType.ARRAY_BUFFER
    });

    if (response.responseCode === http.ResponseCode.OK) {
        let arrayBuffer = response.result as ArrayBuffer;
        let base64Encoder = new util.Base64Helper();
        let base64String = base64Encoder.encodeToString(arrayBuffer);
        return base64String;
    } else {
        throw new Error(`Failed to fetch image: ${response.responseCode}`);
    }
}

此代码通过HTTP请求获取图片的二进制数据,并使用util.Base64Helper将其编码为Base64字符串。确保在module.json5中配置了ohos.permission.INTERNET权限以允许网络访问。

注意事项:

  • 确保网络图片的URL有效。
  • 处理可能的网络异常或请求失败情况。
回到顶部