HarmonyOS 鸿蒙Next照片选择和相机拉起示例代码

HarmonyOS 鸿蒙Next照片选择和相机拉起示例代码

介绍

本示例基于photoAccessHelper类接口实现了选择图片的最大数量、设置要选择的媒体文件类型、设置选择文件最大数量等效果,其中也提供了图片压缩能力。

照片选择和相机拉起源码链接

效果预览

图片名称

使用说明

点击选择图片即可进行图片选择或拍照获取图片。

实现思路

构造函数selectAndCompressPicture(),实现选择图片、对图片进行压缩,并将压缩后的图片转换为 Base64 编码格式的功能,并将得到的 Base64 字符串存储在 this.pictures 数组中。

async selectAndCompressPicture() {
  this.pictures = [];
  let selectResult: photoAccessHelper.PhotoSelectResult = await PictureUtils.selectPicture(6);
  let pictureUriArr: Array<string> = selectResult.photoUris;
  pictureUriArr.forEach(uri => {
    PictureUtils.compressPicture(uri, "image/jpeg", 20).then(data: ArrayBuffer => {
      // 将图片转成base64
      let base64Str = buffer.from(data).toString('base64')
      let resultBase64Str = "data:image/png;base64," + base64Str
      this.pictures.push(resultBase64Str)
    })
  });
}

构造selectPicture方法:创建PhotoSelectOptions对象,设置选择的媒体文件类型,将选择的媒体文件类型设置为图片类型;设置选择文件的最大数量,设置为传入的selectNumber,限制用户最多可以选择的图片数量;创建PhotoViewPicker对象,调用select方法并返回结果。

static async selectPicture(selectNumber: number): Promise<photoAccessHelper.PhotoSelectResult> {
  let photoSelectOptions = new photoAccessHelper.PhotoSelectOptions();
  // 设置要选择的媒体文件类型
  photoSelectOptions.MIMEType = photoAccessHelper.PhotoViewMIMETypes.IMAGE_TYPE;
  // 设置选择文件最大数量
  photoSelectOptions.maxSelectNumber = selectNumber;
  let photoPicker = new photoAccessHelper.PhotoViewPicker();
  return await photoPicker.select(photoSelectOptions)
}

更多关于HarmonyOS 鸿蒙Next照片选择和相机拉起示例代码的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于HarmonyOS 鸿蒙Next照片选择和相机拉起示例代码的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS(鸿蒙Next)中,照片选择和相机拉起的实现主要依赖于@ohos.multimedia.image@ohos.multimedia.camera模块。以下是示例代码:

  1. 照片选择
async function pickImage() {
    try {
        const imagePickerInstance = imagePicker.createImagePicker();
        const result = await imagePickerInstance.select();
        if (result && result.length > 0) {
            const imageUri = result[0].uri;
            console.log('Selected image URI:', imageUri);
        }
    } catch (error) {
        console.error('Failed to pick image:', error);
    }
}
  1. 相机拉起
async function openCamera() {
    try {
        const cameraManager = camera.getCameraManager();
        const cameras = cameraManager.getSupportedCameras();
        if (cameras.length > 0) {
            const cameraDevice = cameras[0];
            const cameraInput = cameraManager.createCameraInput(cameraDevice);
            const session = cameraManager.createCaptureSession();
            session.beginConfig();
            session.addInput(cameraInput);
            await session.commitConfig();
            await session.start();
        }
    } catch (error) {
        console.error('Failed to open camera:', error);
    }
}

这些代码展示了如何在鸿蒙系统中实现照片选择和相机功能。

回到顶部