HarmonyOS鸿蒙Next中图片的base64字符串如何转成图片并存到相册里面

HarmonyOS鸿蒙Next中图片的base64字符串如何转成图片并存到相册里面 大家知道图片的base64字符串,如何转成图片 并存到相册里面吗?

3 回复

参考demo:

let context = getContext(this);
const createAssetByIo = async (sourceFilePath: string, targetFilePath: string) => {
  try {
    console.log(`context.fileDir ===> ${context.filesDir}`)
    let srcFile: fs.File = fs.openSync(sourceFilePath, fs.OpenMode.READ_ONLY);
    let targetFile: fs.File = await fs.open(targetFilePath, fs.OpenMode.READ_WRITE);
    let bufSize = 14096;
    let readSize = 0;
    let buf = new ArrayBuffer(bufSize);
    let readOptions: ReadOptions = { offset: readSize, length: bufSize };
    let readLen = fs.readSync(srcFile.fd, buf, readOptions);
    while (readLen > 0) {
      readSize += readLen;
      fs.writeSync(targetFile.fd, buf, { length: readLen });
      readOptions.offset = readSize;
      readLen = fs.readSync(srcFile.fd, buf, readOptions);
    }
    fs.closeSync(srcFile);
    fs.closeSync(targetFile);
  } catch (error) {
    console.error(`createAssetByIo :: error , msg is ${error} `);
  }
}

更多关于HarmonyOS鸿蒙Next中图片的base64字符串如何转成图片并存到相册里面的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,将Base64字符串转换为图片并存到相册可以通过以下步骤实现:

  1. Base64字符串解码:使用util模块中的base64方法将Base64字符串解码为ArrayBuffer

    import util from '@ohos.util';
    let base64Str = "your_base64_string";
    let arrayBuffer = util.base64.decode(base64Str);
    
  2. ArrayBuffer转换为PixelMap:使用image模块将ArrayBuffer转换为PixelMap

    import image from '@ohos.multimedia.image';
    let imageSource = image.createImageSource(arrayBuffer);
    let pixelMap = await imageSource.createPixelMap();
    
  3. 保存PixelMap到相册:使用mediaLibrary模块将PixelMap保存到相册。

    import mediaLibrary from '@ohos.multimedia.mediaLibrary';
    let context = getContext(this);
    let media = mediaLibrary.getMediaLibrary(context);
    let imageUri = await media.createAsset(mediaLibrary.MediaType.IMAGE, "image.jpg");
    let imageFile = await imageUri.open('w');
    await imageFile.write(pixelMap.getImageBytes());
    await imageFile.close();
    

以上代码实现了将Base64字符串转换为图片并存到相册的功能。

在HarmonyOS鸿蒙Next中,将Base64字符串转换为图片并保存到相册的步骤如下:

  1. Base64解码:使用Base64.decode()方法将Base64字符串解码为字节数组。
  2. 创建图像对象:使用ImageSource.create()方法将字节数组转换为ImageSource对象。
  3. 保存到相册:使用PhotoAccessHelpercreateAsset()方法将图像保存到相册中。

示例代码:

import ohos.media.image.ImageSource;
import ohos.media.image.PixelMap;
import ohos.media.photokit.PhotoAccessHelper;
import ohos.utils.Base64;

public void saveBase64ToAlbum(String base64Str) {
    byte[] imageBytes = Base64.decode(base64Str);
    ImageSource imageSource = ImageSource.create(imageBytes, null);
    PixelMap pixelMap = imageSource.createPixelmap(null);
    PhotoAccessHelper.createAsset(pixelMap, "Image.png", PhotoAccessHelper.AlbumType.USER);
}

确保在config.json中声明相册访问权限。

回到顶部