HarmonyOS图片保存相册问题
const pictureBase64Encode = 'UklGRg4LAABxxxxxWAoAAAAQAAAxxxxxx';
function saveBase64Image() {
window.AppFunctions.callNative(createRequestJsonData("SystemUtil", "savePicture", `{"base64Data": "${pictureBase64Encode}" }`));
}
HybridSystemService中添加savePicture的方法:
import util from '@ohos.util'
@HybridMethod()
public savePicture(jsCallProto: JsCallProto) {
let jsonData = JSON.parse(jsCallProto.getJsonData()) as Record<string, string>;
let base64Data = jsonData?.base64Data ?? "";
if (base64Data) {
let base64 = new util.Base64Helper()
let result = base64.decodeSync(base64Data)
//这边直接就是调用的fs.openSync,前面会拼上file的目录,如果没有文件夹会创建文件夹
let file = FileManager.openStorageFileSync("/picture/"+(new Date()).getMilliseconds()+".jpg")
SystemMediaPickerManager.savePicture(result.buffer.slice(0, result.buffer.byteLength), file).then((_) => {
jsCallProto.onSuccess("save picture success.");
}).catch((err: BusinessError) => {
jsCallProto.onFail("save picture fail, err is:" + JSON.stringify(err));
});
}
}
public static savePicture(buffer:ArrayBuffer, file: fs.File): Promise<void> {
return new Promise((resolve, reject) => {
const imageSource : image.ImageSource = image.createImageSource(buffer);
const imagePackerApi = image.createImagePacker();
let packOpts : image.PackingOption = { format:"image/jpeg", quality:100 };
imagePackerApi.packToFile(imageSource, file.fd, packOpts).then(()=>{
//移动文件到相册中,需要使用自定义dialog saveButton
let dialogHelper = new DialogHelper();
dialogHelper.showCustomDialog(file);
}).catch((error: BusinessError) => {
reject(error);
});
});
}
新建DialogHelper的类:
import { promptAction } from '@kit.ArkUI';
import { common } from '@kit.AbilityKit';
import fs from '@ohos.file.fs'
import { BusinessError } from '@kit.BasicServicesKit';
let customDialogId: number = 0
@Builder
function customDialogBuilder() {
Column() {
Text('保存图片到相册中?').fontSize(10)
Row() {
SaveButton({
text: SaveDescription.SAVE,
}).onClick(async (event: ClickEvent, result: SaveButtonOnClickResult) => {
if (result === SaveButtonOnClickResult.SUCCESS) {
} else {
promptAction.showToast({ message: '设置存储相册权限失败!' })
}
promptAction.closeCustomDialog(customDialogId)
})
Blank().width(50)
Button("取消").onClick(() => {
promptAction.closeCustomDialog(customDialogId)
})
}
}.height(200).padding(5)
}
export class DialogHelper {
showCustomDialog(file: fs.File) {
const context: common.UIAbilityContext = getContext(this) as common.UIAbilityContext;
promptAction.openCustomDialog({
builder: customDialogBuilder.bind(context),
onWillDismiss: (dismissDialogAction: DismissDialogAction) => {
console.info("reason" + JSON.stringify(dismissDialogAction.reason))
console.log("dialog onWillDismiss")
if (dismissDialogAction.reason == DismissReason.PRESS_BACK) {
dismissDialogAction.dismiss()
}
if (dismissDialogAction.reason == DismissReason.TOUCH_OUTSIDE) {
dismissDialogAction.dismiss()
}
}
}).then((dialogId) => {
customDialogId = dialogId
}).catch((error:BusinessError) => {
console.error("openCustomDialog error: " + error)
})
}
}
问题现象:dialog不显示出来,没办法使用SaveButton,图片没有保存到系统相册中。
HarmonyOS
赞
收藏 0
回答 1
待解决
相关问题
HarmonyOS 保存图片到相册问题
1717浏览 • 1回复 待解决
HarmonyOS 保存图片到相册权限问题
1430浏览 • 1回复 待解决
HarmonyOS保存图片到系统相册问题咨询
1801浏览 • 1回复 待解决
HarmonyOS 图片保存到相册
1271浏览 • 1回复 待解决
HarmonyOS 保存图片到系统相册
1471浏览 • 1回复 待解决
HarmonyOS 保存图片到本地相册
1400浏览 • 1回复 待解决
HarmonyOS 图片保存到相册报错
1320浏览 • 1回复 待解决
HarmonyOS 截图保存图片到相册
1140浏览 • 1回复 待解决
HarmonyOS 实现保存图片到相册
1555浏览 • 1回复 待解决
HarmonyOS 相册保存图片设置title报错
1250浏览 • 1回复 待解决
HarmonyOS pixelMap保存的图片如何进行保存到相册
1336浏览 • 1回复 待解决
HarmonyOS view生成图片,然后保存到相册
1438浏览 • 1回复 待解决
HarmonyOS 保存PixelMap到相册,显示保存成功,相册中的图片为空白图片,宽高都是0
1098浏览 • 1回复 待解决
HarmonyOS 如何将图片保存到相册
1025浏览 • 1回复 待解决
如何保存网络图片到相册
2063浏览 • 1回复 待解决
HarmonyOS 安全控件的保存控件SaveButton保存图片到相册失败
1143浏览 • 1回复 待解决
HarmonyOS 项目中图片如何保存到相册中?
1202浏览 • 1回复 待解决
获取网络图片并保存到相册
3331浏览 • 1回复 待解决
如何保存本地图片到相册中
2724浏览 • 1回复 待解决
HarmonyOS 如何将图片,视频保存到相册
1294浏览 • 1回复 待解决
HarmonyOS如何把图片保存到手机相册
1914浏览 • 1回复 待解决
求大佬告知如何保存图片到相册
2462浏览 • 1回复 待解决
HarmonyOS image.PixelMap保存到 相册问题
1225浏览 • 1回复 待解决
鸿蒙化flutter在flutter使用插件保存图片到相册出现问题
1704浏览 • 1回复 待解决
HarmonyOS调用相册管理api,创建并保存图片至相册失败,查看图片是空白
1718浏览 • 1回复 待解决
工具类中弹出自定义弹框,参照以下DEMO:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-arkui-uicontext-V5#opencustomdialog12