HarmonyOS 图库选择器?

是否有图片选择器提供,如何实现,需要拍照和选择图片功能

阅读 588
1 个回答

可以参考以下demo

import { picker } from '@kit.CoreFileKit';
import photoAccessHelper from '@ohos.file.photoAccessHelper';
import { BusinessError } from '@kit.BasicServicesKit';

@Entry
@Component
struct Index9 {
  @State selectedUri: string = '';

  choosePhoto() {
    try {
      let PhotoSelectOptions = new photoAccessHelper.PhotoSelectOptions();
      PhotoSelectOptions.MIMEType = photoAccessHelper.PhotoViewMIMETypes.IMAGE_TYPE;
      PhotoSelectOptions.maxSelectNumber = 5;
      PhotoSelectOptions.isEditSupported = true;
      PhotoSelectOptions.isPhotoTakingSupported = true;
      let photoPicker = new picker.PhotoViewPicker()
      let uris: Array<string> = [];
      photoPicker.select(PhotoSelectOptions).then((PhotoSelectResult: photoAccessHelper.PhotoSelectResult) => {
        console.info('PhotoViewPicker.select successfully, PhotoSelectResult uri: ' + JSON.stringify(PhotoSelectResult));
        uris = PhotoSelectResult.photoUris;
        this.selectedUri = uris[0];
      }).catch((err: BusinessError) => {
        console.error(`PhotoViewPicker.select failed with err: ${err.code}, ${err.message}`);
      });
    } catch (error) {
      let err: BusinessError = error as BusinessError;
      console.error(`PhotoViewPicker failed with err: ${err.code}, ${err.message}`);
    }
  }

  build() {
    Row() {
      Column({ space: 30 }) {
        Button('选择图片')
          .width(200)
          .height(30)
          .onClick(() => {
            this.choosePhoto()
          })
        Image(this.selectedUri)
          .width('95%')
          .height(400)
          .padding({top:'30xp'})
      }
      .width('100%')
      .height('100%')
    }
    .height('100%')
  }
}

基于以上demo,如适用拍照属性和回显功能,推荐使用相册管理模块创建photoPicker,

参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-photoaccesshelper-V5\#photoviewpicker

let photoPicker = new photoAccessHelper.PhotoViewPicker();

其中PhotoSelectOptions中提供preselectedUris接口,表示预选择图片的uri数据。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进