HarmonyOS鸿蒙Next中图片base64怎么转uri

HarmonyOS鸿蒙Next中图片base64怎么转uri

4 回复

存沙箱,用文件 api 读取,

更多关于HarmonyOS鸿蒙Next中图片base64怎么转uri的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,将图片的Base64字符串转换为URI,可以使用Image组件的createImageSource方法。首先,将Base64字符串解码为字节数组,然后通过ImageSource.createImageSource方法创建ImageSource对象,最后调用ImageSource.getUri方法获取URI。具体代码如下:

import image from '@ohos.multimedia.image';

let base64Str = 'your_base64_string';
let buffer = new ArrayBuffer(base64Str.length);
let dataView = new Uint8Array(buffer);
for (let i = 0; i < base64Str.length; i++) {
  dataView[i] = base64Str.charCodeAt(i);
}
let imageSource = image.createImageSource(buffer);
let uri = imageSource.getUri();

在HarmonyOS Next中,可以通过以下方式将Base64图片数据转换为URI:

  1. 使用Base64Helper类进行解码:
import { Base64Helper } from '@ohos.base';

let base64Data = "your_base64_string"; // 替换为实际的Base64数据
let buffer = Base64Helper.decode(base64Data);
  1. 将解码后的数据写入临时文件并获取URI:
import { fileIo } from '@ohos.fileio';

// 创建临时文件路径
let tempFilePath = context.cacheDir + '/temp_image.jpg';

// 写入文件
let file = fileIo.openSync(tempFilePath, fileIo.OpenMode.CREATE | fileIo.OpenMode.READ_WRITE);
fileIo.writeSync(file.fd, buffer);
fileIo.closeSync(file);

// 获取文件URI
let uri = 'file://' + tempFilePath;
  1. 或者使用更简洁的方式:
import { Base64Helper } from '@ohos.base';
import { fileIo } from '@ohos.fileio';

function base64ToUri(base64: string, context: Context): string {
    let buffer = Base64Helper.decode(base64);
    let tempFile = context.cacheDir + '/temp_' + Date.now() + '.jpg';
    fileIo.writeFileSync(tempFile, buffer);
    return 'file://' + tempFile;
}

注意事项:

  • 确保base64字符串不包含前缀(如"data:image/jpeg;base64,")
  • 使用后记得清理临时文件
  • 文件扩展名(.jpg/.png等)应根据实际图片类型设置,
回到顶部