HarmonyOS 鸿蒙Next 使用XComponent组件type为Surface的相机预览能否添加自定义水印UI组件 并实现拍照后水印编码显示在图片内 有相关案例吗

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

HarmonyOS 鸿蒙Next 使用XComponent组件type为Surface的相机预览能否添加自定义水印UI组件 并实现拍照后水印编码显示在图片内 有相关案例吗

使用XComponent组件type为Surface的相机预览可以在预览界面添加自定义的水印UI组件吗?并且在拍照后如何将自定义的水印进行编码一起显示在拍照的图片内,有相关的案例吗 

 

2 回复

当前并不支持XComponent组件type为Surface的相机预览可以在预览界面添加自定义的水印UI组件。 但是可以试一下“浮层”的特性,实现方式是设置一个浮层,在里面放水印,然后通过设置触摸事件透传让浮层不影响触摸。

浮层-通用属性-组件通用信息-ArkTS组件-ArkUI(方舟UI框架)-应用框架 - 华为HarmonyOS开发者

可以使用OffscreenCanvasRenderingContext2D在Canvas上进行离屏绘制,绘制对象可以是矩形、文本、图片等。绘制的内容先绘制在缓存区,再将其转换成图片,一次性绘制到Canvas上,过程为:

通过transferToImageBitmap方法将离屏画布最近渲染的图像创建为一个ImageBitmap对象。通过CanvasRenderingContext2D对象的transferFromImageBitmap方法显示给定的ImageBitmap对象。

demo:

@Entry
@Component
struct CanvasExample2 {
  //用来配置CanvasRenderingContext2D对象和OffscreenCanvasRenderingContext2D对象的参数,包括是否开启抗锯齿。true表明开启抗锯齿

  private settings: RenderingContextSettings = new RenderingContextSettings(true)
  private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings)
  //用来创建OffscreenCanvasRenderingContext2D对象,width为离屏画布的宽度,height为离屏画布的高度。通过在canvas中调用OffscreenCanvasRenderingContext2D对象来绘制。

  private offContext: OffscreenCanvasRenderingContext2D = new OffscreenCanvasRenderingContext2D(600, 600, this.settings)

  build() {

    Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {

      Canvas(this.context)

        .width('100%')

        .height('100%')

        .backgroundColor('#F5DC62')

        .onReady(() => {

          //可以在这里绘制内容

          this.offContext.strokeRect(50, 50, 200, 150);

          //将离屏绘值渲染的图像在普通画布上显示

          let image = this.offContext.transferToImageBitmap();

          this.context.transferFromImageBitmap(image);

        })

    }

    .width('100%')

    .height('100%')

  }
}

调用photoOutput的capture方法后获得的照片,参考:

@ohos.multimedia.camera (相机管理)-ArkTS API-Camera Kit(相机服务)-媒体 - 华为HarmonyOS开发者

demo,参考:https://gitee.com/openharmony/multimedia_camera_framework/tree/master/frameworks/js/camera_napi/demo

更多关于HarmonyOS 鸿蒙Next 使用XComponent组件type为Surface的相机预览能否添加自定义水印UI组件 并实现拍照后水印编码显示在图片内 有相关案例吗的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


HarmonyOS 鸿蒙Next 使用XComponent组件type为Surface的相机预览可以添加自定义水印UI组件,并实现拍照后水印编码显示在图片内。具体实现方式如下:

在相机预览的Surface XComponent上,可以通过叠加一个自定义的UI组件(如Text或其他图形组件)来实现水印效果。这个自定义组件可以设置为半透明或全透明背景,以不影响相机预览内容。同时,通过布局和样式调整,可以确保水印在预览画面中的位置、大小及透明度满足需求。

拍照时,需先获取相机预览的帧数据,再将水印信息编码到图片数据中。这通常涉及到底层图像处理操作,如使用图像处理库对相机预览帧进行叠加水印处理,然后保存处理后的图像。

HarmonyOS 提供了丰富的图像处理API,可用于实现水印的编码和叠加。通过这些API,开发者可以灵活地对图像进行处理,满足水印添加的需求。

相关案例可以参考HarmonyOS开发者社区或官方文档中的示例代码,这些资源通常会提供详细的实现步骤和代码示例,有助于开发者快速上手。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部