/**
* base64编码字符集转化成图片文件。
*
* @param base64Str
* @param path 文件存储路径
* @return 是否成功
*/
async base64ToFile(base64Str:string, path:string): Promise<boolean> {
// 需要将前缀 data:image/jpg;base64, 过滤掉
if (base64Str.startsWith("data:image")) {
let splitBase64Str:string[] = base64Str.split(",");
base64Str = splitBase64Str[1];
}
let base64 = new util.Base64Helper();
let data:Uint8Array = base64.decodeSync(base64Str, util.Type.MIME);
for (let i = 0; i < data.length; i++) {
if (data[i] < 0) {
//调整异常数据
data[i] += 256;
}
}
let helper = photoAccessHelper.getPhotoAccessHelper(context);
try {
let result_read = await PermissionHelper.getInstance().reqPermissions(PermissionHelper.READ_MEDIA)
if (result_read) {
let result_write = await PermissionHelper.getInstance().reqPermissions(PermissionHelper.WRITE_MEDIA)
if (result_write) {
// 触发后5秒内通过createAsset接口创建图片文件,5秒后createAsset权限收回。
let uri = await helper.createAsset(photoAccessHelper_.PhotoType.IMAGE, 'jpg');
// 使用uri打开文件,可以持续写入内容,写入过程不受时间限制
let file = await fs.open(uri, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
fs.writeSync(file.fd, data);
fs.closeSync(file);
}
}
return true;
} catch (e) {
showToast("申请权限");
e.printStackTrace();
}
return false;
}
鸿蒙base64编码字符集转化成图片文件
最新推荐文章于 2024-08-09 16:47:03 发布