HarmonyOS 鸿蒙Next:使用cameraPicker.pick拍照并设置照片存放至沙箱目录而非图库

发布于 1周前 作者 gougou168 来自 鸿蒙OS

HarmonyOS 鸿蒙Next:使用cameraPicker.pick拍照并设置照片存放至沙箱目录而非图库

我使用cameraPicker.pick调起系统相机进行拍照,但是拍摄的照片会自动存放到图库中,我不想在图库中看到拍摄的照片,而是想把照片放到沙箱目录里面,要怎么操作呢?


关于HarmonyOS 鸿蒙Next:使用cameraPicker.pick拍照并设置照片存放至沙箱目录而非图库的问题,您也可以访问:https://www.itying.com/category-93-b0.html 联系官网客服。

9 回复

需要用fileUri.getUriFromPath(saveUri)将沙箱路径转化

export async function getPictureFromCamera(event: OnShowFileSelectorEvent) {
  let context = AppStorage.get<common.UIAbilityContext>('ui_ability_context')
  if (!context) {
    console.error('Web onShowFileSelector: get context fail, please check AppStorage')
    return
  }

// 拍照后,将文件写入沙箱temp目录(需先创建该文件,否则无法成功写入) let saveUri = context.tempDir + ‘/’ + util.generateRandomUUID() + ‘.png’ try { let file = fs.openSync(saveUri, fs.OpenMode.CREATE | fs.OpenMode.READ_WRITE) fs.closeSync(file) } catch (e) { }

let pickerProfile: cameraPicker.PickerProfile = { cameraPosition: camera.CameraPosition.CAMERA_POSITION_BACK, saveUri: fileUri.getUriFromPath(saveUri) // 将沙箱路径转化为系统可识别的路径 } let pickerMediaTypes: cameraPicker.PickerMediaType[] = [ cameraPicker.PickerMediaType.PHOTO ]

let pickerResult: cameraPicker.PickerResult = await cameraPicker.pick(context, pickerMediaTypes, pickerProfile) event?.result.handleFileList([pickerResult.resultUri]) }<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

HarmonyOS的超级终端功能让我实现了真正的设备自由,大爱!

这样是可以保存到沙箱目录,但是我这边发现保存到沙箱目录的同时,图库里面也会保存一张,这样是正常的吗?

找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:https://www.bilibili.com/video/BV1S4411E7LY/?p=17

这边在录制视频的时候也遇到了同样的问题。通过 open 创建对应空文件也不行。

fs.openSync(path, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE | fs.OpenMode.TRUNC)

//调用 picker api

//fs.close(path)<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

最终 PickerResult 中返回的uri好像还是 系统图库里面的uri,不是传入的应用沙盒路径。而自行创建的文件大小也是0。

感觉又是系统特殊行为,跟文档对不上的。。。

在调用之前,设置pickerProfile中的saveUri,选好需要保存的沙河路径即可。

saveUri: this.context.filesDir + “Pictrue/ocr”,我设置了这个之后,图片并没有存到这个目录,并且返回的图片resultUri也成空了

貌似要先创建这个具体的文件(空文件)才行

确实需要先创建具体的文件才行

回到顶部