HarmonyOS如何在相机回调的拍照数据做裁切

目前想实现根据下面函数回调的nextImage 数据,对数据做裁切,类似传入矩形位置,然后拿到裁切后的数据。

try { 
  imageReceiver.on('imageArrival', () => { 
    imageReceiver.readNextImage((err: BusinessError, nextImage: image.Image) => { 
      if (err || nextImage === undefined) { 
        ConsoleUtils.LOG_SDK_WARN(ConsoleUtils.CAMERA, "onImageArrival  readNextImage err:" + err.code) 
        return; 
      } 
      nextImage.getComponent(image.ComponentType.JPEG, (err: BusinessError, imgComponent: image.Component) => { 
        //ConsoleUtils.LOG_SDK_WARN(ConsoleUtils.CAMERA,IdcardConfig.SDK_TAG_CameraController+ "getComponent") 
        if (err || imgComponent === undefined) { 
          ConsoleUtils.LOG_SDK_WARN(ConsoleUtils.CAMERA, "onImageArrival getComponent err:" + err.code) 
          return; 
        } 
        //ConsoleUtils.LOG_SDK_WARN(ConsoleUtils.CAMERA,IdcardConfig.SDK_TAG_CameraController+ "isPreviewMode:" + this.isPreviewMode); 
        if (imgComponent.byteBuffer as ArrayBuffer) { 
          // 回调数据 
          onReceiver(imgComponent); 
          nextImage.release(); // 必须进行释放否则无法持续获取帧数据 
        } else { 
          nextImage.release(); 
          return; 
        } 
      }) 
    }) 
  }) 
} catch (error) { 
}
HarmonyOS
2024-08-13 15:56:16
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
put_get

可以参考一下Demo将图片转成pixelmap,再根据文档https://developer.huawei.com/consumer/cn/doc/harmonyos-faqs-V5/faqs-image-kit-V5#section1328741173614,进行图片的裁切处理。

receiver.on('imageArrival', () => { 
  console.error("imageArrival callback"); 
  receiver.readNextImage((err, nextImage: image.Image) => { 
    let a = nextImage.format 
    nextImage.getComponent(image.ComponentType.JPEG, async (err, imgComponent: image.Component) => { 
      if (err || imgComponent === undefined) { 
        return; 
      } 
      this.saveImageToFile(imgComponent.byteBuffer); 
      if (imgComponent.byteBuffer as ArrayBuffer) { 
        let sourceOptions: image.SourceOptions = { 
          sourceDensity: 120, 
          sourcePixelFormat: 8, // NV21 
          sourceSize: { 
            height: this.previewProfilesObj2!.size.height, 
            width: this.previewProfilesObj2!.size.width 
          }, 
        } 
        let imageResource = image.createImageSource(imgComponent.byteBuffer, sourceOptions); 
        imageResource.createPixelMap({}).then((res)=>{ 
          this.imgUrl = res; 
        }); 
      } else { 
        return; 
      } 
      nextImage.release(); 
    }) 
  }) 
})
分享
微博
QQ
微信
回复
2024-08-13 21:25:55
相关问题
如何实现拍照预览onPreviewFrame
1522浏览 • 1回复 待解决
HarmonyOS cpp数据调到UI层如何?
905浏览 • 1回复 待解决
HarmonyOS 自定义相机拍照数据展示
2305浏览 • 1回复 待解决
如何调用系统相机拍照
2848浏览 • 1回复 待解决
HarmonyOS 如何实现调用相机拍照
874浏览 • 1回复 待解决
HarmonyOS如何控制相机拍照
1023浏览 • 0回复 待解决
关于如何使用相机拍照模块拍照问题
2784浏览 • 0回复 待解决
HarmonyOS 拉起相机拍照
1166浏览 • 0回复 待解决
HarmonyOS 相机拍照模糊
2182浏览 • 1回复 待解决
HarmonyOS 如何调用系统相机进行拍照
1705浏览 • 1回复 待解决
HarmonyOS 相机-拍照之后预览
1865浏览 • 1回复 待解决
如何在NAPI执行上层时获取env
995浏览 • 1回复 待解决
打开相机:直接使用相机拍照能力
2905浏览 • 1回复 待解决
HarmonyOS 调用相机拍照问题
1094浏览 • 1回复 待解决
HarmonyOS APP无法打开相机拍照
1555浏览 • 1回复 待解决