/** * 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; }