• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# NdkPixelMap
2
3## 介绍
4
5本示例主要实现了简单的图片解码、位图操作、图片编码功能。
6
7## 效果预览
8
9| 主界面                                         |
10| ---------------------------------------------- |
11| ![NdkPixelMap](./screenshots/NdkPixelMap.jpeg) |
12
13使用说明:
14
151. 点击图片解码按钮,解码图片并以弹窗的形式显示结果。
162. 点击位图操作按钮,在Napi中对图片进行旋转、翻转裁剪等一系列操作,并以弹窗的形式显示结果。
173. 点击图片编码_ImageSource按钮,传入ImageSource将图片保存到沙箱路径并以弹窗的形式显示结果。
184. 点击图片编码_PixelMap按钮,传入PixelMap将图片保存到沙箱路径并以弹窗的形式显示结果。
19
20## 工程目录
21
22```
23NdkPixelMap
24entry/src/main/cpp/
25├── types
26│   ├── libimage
27│   │   ├── packer.cpp (图片编码)
28│   │   ├── pixelmap.cpp (位图操作)
29│   │   └── source.cpp (图片解码)
30│   └── libentry
31│       └── Index.d.ts (声明Napi接口,供ts调用)
32├── CMakeLists.txt (CMake编译配置文件)
33└── napi_init.cpp (初始化Napi接口)
34entry/src/main/ets/
35├── common
36│   └── Logger.ts (logger日志类)
37└── pages
38    └── Index.ets (UI界面)
39entry/src/main/resources/
40└── rawfile
41    └── test.gif(图片资源)
42entry/src/ohosTest/ets/
43└── test
44    ├── Ability.test.ets (UI测试代码)
45    └── List.test.ets (测试套件列表)
46```
47
48## 具体实现
49
50+ 图片解码功能在source中实现,源码参考source.cpp51    + 创建ImageSource:调用napi_get_value_string_utf8接口获取传入的文件uri,再使用OH_ImageSourceNative_CreateFromUri创建ImageSource。
52    + 创建PixelMap:调用OH_DecodingOptions_Create接口创建解码参数,在使用OH_ImageSourceNative_CreatePixelmap创建PixelMap。
53+ 位图操作功能在pixelmap中实现,源码参考pixelmap.cpp:
54    + 创建PixelMap:使用OH_PixelmapInitializationOptions_Create创建位图参数结构体实例,并通过OH_PixelmapInitializationOptions_SetWidth等接口设置设置宽度等参数。调用OH_PixelmapNative_CreatePixelmap接口创建Pixelmap。
55    + 处理PixelMap数据:通过OH_PixelmapNative_Opacity、OH_PixelmapNative_Scale、OH_PixelmapNative_Translate、OH_PixelmapNative_Rotate、OH_PixelmapNative_Flip等接口,设置PixelMap的透明度、进行缩放、偏移旋转和翻转操作。
56+ 图片编码功能在packer中实现,源码参考packer.cpp:
57    + 图片编码:通过OH_ImageSourceNative_CreateFromFd创建图像源对象编码参数后,调用OH_ImagePackerNative_PackFromImageSource接口将图像数据编码并到指定文件。
58
59## 相关权限
60
61[ohos.permission.READ_IMAGEVIDEO](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/AccessToken/permissions-for-system-apps.md#ohospermissionread_imagevideo)
62
63[ohos.permission.WRITE_IMAGEVIDEO](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/AccessToken/permissions-for-system-apps.md#ohospermissionread_imagevideo)
64
65## 依赖
66
67不涉及。
68
69## 约束和限制
70
711. 本示例支持标准系统上运行,支持设备:RK3568;
722. 本示例支持API14版本SDK,版本号:5.0.2.57;
733. 本示例已支持使用DevEco Studio 5.0.1 Release (构建版本:5.0.5.306,构建 2024年12月6日)编译运行
744. 本示例相关权限为system_basic级别,需要配置高权限签名,可参考[申请使用受控权限](https://docs.openharmony.cn/pages/v5.0/zh-cn/application-dev/security/AccessToken/declare-permissions-in-acl.md)
75
76## 下载
77
78如需单独下载本工程,执行如下命令:
79
80```
81git init
82git config core.sparsecheckout true
83echo code/DocsSample/Media/Image/NdkPixelMap/ > .git/info/sparse-checkout
84git remote add origin OpenHarmony/applications_app_samples
85git pull origin master
86```