基于HarmonyOS鸿蒙Next Native对PixelMap进行图形处理

基于HarmonyOS鸿蒙Next Native对PixelMap进行图形处理

场景描述

部分用户需要在 Native 侧实现对 PixelMap 进行图形处理。因此本文详细讲述了如何在 Native 侧操作 PixelMap,包含对图片的旋转裁剪等。

方案描述

1、在 ArkTS 侧:

  • 在 Index.ets 文件中添加 XComponent 组件,使用 XComponent 组件来送显图片。
  • 通过资源管理器获取图片并解码成 PixelMap 对象。

2、在 Native 侧使用 c++ 对 PixelMap 进行数据处理:

  • 创建 PluginManager 单例来管理 XComponent 组件。
  • 创建 SampleBitMap 类,一个 XComponent 组件 id 对应一个 SampleBitMap 实例,所有对 PixelMap 对象的处理和 Drawing 的渲染输出操作都在该类中实现。

Native 侧操作 PixelMap 的所有功能

基础功能 API 能力支持
Alpha 通道 OH_PixelMap_SetAlphaAble
像素密度 OH_PixelMap_SetDensity
透明度 OH_PixelMap_SetOpacity
缩放 OH_PixelMap_Scale
偏移 OH_PixelMap_Translate
旋转 OH_PixelMap_Rotate
翻转 OH_PixelMap_Flip
裁剪 OH_PixelMap_Crop

场景实现

实现 PixelMap 图片的基础功能

1、TS 侧准备。

  • 在 aboutToAppear 方法中创建 PixelMap 对象。
  • 调用 c++ 的 transform 接口,传入 PixelMap 对象。

2、Native 侧准备。

  • 接收数据后调用 OH_PixelMap_Rotate 和 OH_PixelMap_Crop 等方法对图片进行处理。
  • 调用 Drawing 的 OH_Drawing_CanvasDrawPixelMapRect 方法将修改后的 PixelMap 图形渲染输出。

案例代码

// 案例代码

将 PixelMap 矩形图片裁剪成圆形

备注:此功能为扩展功能,通过上面接口做不到,PixelMap 不提供该功能的 API 能力支持

Native 侧准备:

1、调用 OH_Drawing_PathCreate 方法创建绘制路径 cPath 。 2、调用 OH_Drawing_PathAddCircle(cPath_, x, y, radius, PATH_DIRECTION_CCW) 方法添加圆形路径。 3、调用 OH_Drawing_CanvasClipPath (cCanvas_, cPath_ , INTERSECT, true) 方法将 cavas 区域裁剪成指定形状并和目标区域取交集。 4、调用 Drawing 的 OH_Drawing_CanvasDrawPixelMapRect 方法将 PixelMap 图形在 cavas 中渲染出来,即可得到圆形图片。

案例代码

// 案例代码

更多关于基于HarmonyOS鸿蒙Next Native对PixelMap进行图形处理的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

在HarmonyOS鸿蒙Next Native中,PixelMap是用于处理图像数据的关键类。通过PixelMap,开发者可以直接操作像素数据,进行图像处理如缩放、旋转、裁剪等。鸿蒙Next Native提供了丰富的API,支持高效的图像处理操作,确保在设备上实现高性能的图形渲染。开发者可以利用这些API,结合鸿蒙系统的底层优化,实现复杂的图像处理功能。

更多关于基于HarmonyOS鸿蒙Next Native对PixelMap进行图形处理的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS Next中,通过Native API操作PixelMap进行图形处理是一个高效的方式。从提供的代码来看,您已经实现了完整的处理流程,包括:

  1. TS侧:
  • 使用XComponent组件进行显示
  • 通过资源管理器获取并解码PixelMap
  • 调用Native接口进行图形变换
  1. Native侧:
  • 使用OH_PixelMap_*系列API进行基础操作(旋转、裁剪、缩放等)
  • 通过OH_Drawing_*API进行渲染输出
  • 实现了圆形裁剪等扩展功能

关键点说明:

  1. 性能方面:直接操作PixelMap的Native内存比JS层操作更高效,适合处理大图或需要高性能的场景

  2. 内存管理:

  • 注意及时调用OH_PixelMap_UnAccessPixels释放锁定的内存
  • NativePixelMap对象需要正确管理生命周期
  1. 扩展功能实现:
  • 通过OH_Drawing_PathCreate创建路径
  • 使用OH_Drawing_CanvasClipPath实现特殊形状裁剪
  • 最后用OH_Drawing_CanvasDrawPixelMapRect渲染

您当前的实现方案是标准的HarmonyOS Native图形处理流程,结构清晰,覆盖了常见图形处理需求。

回到顶部