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
559浏览 • 1回复 待解决
HarmonyOS 自定义相机拍照数据展示
592浏览 • 1回复 待解决
HarmonyOS如何控制相机拍照
58浏览 • 0回复 待解决
HarmonyOS 拉起相机拍照
279浏览 待解决
HarmonyOS 相机拍照模糊
405浏览 • 0回复 待解决
关于如何使用相机拍照模块拍照问题
1688浏览 • 0回复 待解决
如何调用系统相机拍照
1561浏览 • 1回复 待解决
如何在NAPI执行上层时获取env
252浏览 • 1回复 待解决
HarmonyOS 相机-拍照之后预览
154浏览 • 1回复 待解决
HarmonyOS APP无法打开相机拍照
315浏览 • 1回复 待解决
HarmonyOS 如何声明全局函数
238浏览 • 1回复 待解决
打开相机:直接使用相机拍照能力
1494浏览 • 1回复 待解决
interface如何调用
851浏览 • 1回复 待解决
harmonyOS基于api9如何调用相机拍照
3702浏览 • 1回复 待解决
如何调用系统相机拍照、录视频?
270浏览 • 1回复 待解决
HarmonyOS killAllProcesses()无成功
41浏览 • 1回复 待解决
HarmonyOS 相机旋转横屏拍照问题
112浏览 • 1回复 待解决