h5 传给app 图片的base64字符串,怎么将这字符串转成图片并保存到相册

h5 传给app 图片的base64字符串,怎么将这字符串转成图片并保存到相册

HarmonyOS
2024-08-13 16:19:03
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
zxjiu

目前可以使用下面的demo进行保存操作 在module.json5申请权限:ohos.permission.WRITE_IMAGEVIDEO

import { webview } from '@kit.ArkWeb'; 
import { util } from '@kit.ArkTS'; 
import { abilityAccessCtrl, common } from '@kit.AbilityKit'; 
import { photoAccessHelper } from '@kit.MediaLibraryKit'; 
import fs from '@ohos.file.fs'; 
 
let base64helper = new util.Base64Helper() 
let buffer: ArrayBuffer; 
let appContext = getContext(this); 
class Picture { 
  picBase64: string = ''; 
  savePicture(picBase64: string) { 
 
    this.picBase64 = picBase64 
    buffer = base64helper.decodeSync(picBase64, util.Type.MIME).buffer as ArrayBuffer 
    this.requestPermissionsFn() 
  } 
  requestPermissionsFn(){ 
    console.log(`request`); 
    try { 
      const atManager = abilityAccessCtrl.createAtManager() 
      //申请相册管理模块权限'ohos.permission.WRITE_IMAGEVIDEO' 
      atManager.requestPermissionsFromUser(appContext, [ 
        'ohos.permission.WRITE_IMAGEVIDEO' 
      ]).then(async () => { 
        console.log(`request Permissions success!`); 
        try { 
          //获取相册管理模块的实例,用于访问和修改相册中的媒体文件 
          let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(appContext); 
          //通过createAsset接口创建图片文件 
          let uri = await phAccessHelper.createAsset(photoAccessHelper.PhotoType.IMAGE, 'png'); // 创建媒体文件 
          console.info('createAsset successfully, uri: ' + uri); 
          let file = await fs.open(uri, fs.OpenMode.READ_WRITE || fs.OpenMode.CREATE); 
          // 使用uri打开文件,可以持续写入内容,写入过程不受时间限制 
          console.log(JSON.stringify(buffer)) 
          await fs.write(file.fd, buffer); 
          // 关闭文件 
          await fs.close(file); 
        } catch (err) { 
          console.error('createAsset failed, message = ', err); 
        } 
      }) 
    } catch (err) { 
      console.info(`requestPermissionsFromUser call Failed! error: ${err.code}`); 
    } 
  } 
} 
@Entry 
@Component 
struct Index { 
  private webController: WebviewController = new webview.WebviewController() 
  @State message: string = 'Hello World'; 
  @State pic: Picture = new Picture() 
  build() { 
    Row() { 
      Column() { 
        Web({ src: $rawfile("index.html"), controller: this.webController }) 
          .height("80%") 
          .javaScriptProxy({ 
            object: this.pic, 
            name: "picture", 
            methodList: ["savePicture"], 
            controller: this.webController 
          }) 
      } 
      .width('100%') 
    } 
    .height('100%') 
  } 
}
分享
微博
QQ
微信
回复
2024-08-13 22:07:36
相关问题
base64字符如何转为图片保存
2690浏览 • 1回复 待解决
base64字符保存图片方法
862浏览 • 1回复 待解决
HarmonyOS 图片转为base64字符
192浏览 • 1回复 待解决
如何图片base64字符转PixelMap?
612浏览 • 1回复 待解决
如何PixelMap转图片base64字符
539浏览 • 1回复 待解决
PixelMap类型怎么转换成Base64字符
634浏览 • 1回复 待解决
HarmonyOS SM2加签返回Base64字符
31浏览 • 1回复 待解决
如何加载字符串形式H5数据
2102浏览 • 1回复 待解决
HarmonyOS 字符串图片
46浏览 • 1回复 待解决
ResourceStr 类型如何转成字符串
258浏览 • 1回复 待解决