HarmonyOS 鸿蒙Next拍照后保存为头像,杀掉app进程后再次进入头像无法显示
HarmonyOS 鸿蒙Next拍照后保存为头像,杀掉app进程后再次进入头像无法显示
保存用户头像到数据库,设置头像后,再次进入app无法显示
async choose(){
try {
// 设置图片选择器选项
const photoSelectOptions = new picker.PhotoSelectOptions();
// 限制只能选择一张图片
photoSelectOptions.MIMEType = picker.PhotoViewMIMETypes.IMAGE_TYPE;
photoSelectOptions.maxSelectNumber = 10;
// 创建并实例化图片选择器
const photoViewPicker = new picker.PhotoViewPicker();
// 选择图片并获取图片URI
let uris: picker.PhotoSelectResult = await photoViewPicker.select(photoSelectOptions);
if (!uris || uris.photoUris.length === 0) return;
console.info(‘123123uris’, JSON.stringify(uris))
// 获取选中图片的第一张URI
this.uri = uris.photoUris[0];
} catch (error) {
let err: BusinessError = error as BusinessError;
console.error('PhotoViewPicker failed with err: ’ + JSON.stringify(err));
}
}
async choose(){
try {
// 设置图片选择器选项
const photoSelectOptions = new picker.PhotoSelectOptions();
// 限制只能选择一张图片
photoSelectOptions.MIMEType = picker.PhotoViewMIMETypes.IMAGE_TYPE;
photoSelectOptions.maxSelectNumber = 10;
// 创建并实例化图片选择器
const photoViewPicker = new picker.PhotoViewPicker();
// 选择图片并获取图片URI
let uris: picker.PhotoSelectResult = await photoViewPicker.select(photoSelectOptions);
if (!uris || uris.photoUris.length === 0) return;
console.info(‘123123uris’, JSON.stringify(uris))
// 获取选中图片的第一张URI
this.uri = uris.photoUris[0];
} catch (error) {
let err: BusinessError = error as BusinessError;
console.error('PhotoViewPicker failed with err: ’ + JSON.stringify(err));
}
}
3 回复
需要将选择的图片uri保存到沙盒路径中保存使用。
choosePhoto() {
const photoSelectOptions = new picker.PhotoSelectOptions();
photoSelectOptions.MIMEType = picker.PhotoViewMIMETypes.IMAGE_TYPE; // 过滤选择媒体文件类型为IMAGE
photoSelectOptions.maxSelectNumber = 1; // 选择媒体文件的最大数目
let uris: Array<string> = [];
const photoViewPicker = new picker.PhotoViewPicker();
photoViewPicker.select(photoSelectOptions).then(async (photoSelectResult: picker.PhotoSelectResult) => {
uris = photoSelectResult.photoUris;
console.info('photoViewPicker.select to file succeed and uris are:' + uris);
let context = getContext(this) as common.UIAbilityContext;
let resFile = fs.openSync(uris[0], fs.OpenMode.READ_ONLY)
const dateStr = (new Date().getTime()).toString()
// 临时文件目录
let newPath = context.cacheDir + `/${dateStr + resFile.name}`;
// 转化路径
fs.copyFileSync(resFile.fd, newPath);
// 新的路径
let realUri = 'file://' + newPath;
//保存路径使用
this.avatarUri = realUri;
}).catch((err: BusinessError) => {
console.error(`Invoke photoViewPicker.select failed, code is ${err.code}, message is ${err.message}`);
})
}
是不是没选保存数据
针对您提出的HarmonyOS 鸿蒙Next拍照后保存为头像,杀掉app进程后再次进入头像无法显示的问题,这可能是由于多种因素导致的。以下是一些可能的原因及排查方向:
- 图片保存路径与读取路径不一致:请确保您保存头像的图片路径与后续读取头像时使用的路径完全一致。
- 图片格式或文件损坏:检查保存的头像图片格式是否为系统所支持,同时确认图片文件未损坏。
- 缓存问题:杀掉app进程后,系统可能未正确加载缓存中的头像图片,尝试清除app缓存或重启设备。
- 权限问题:确保您的应用已获取读写存储空间的权限,以便正确保存和读取头像图片。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html 。