• Home
Name Date Size #Lines LOC

..--

AppScope/06-May-2025-3432

entry/06-May-2025-1,7521,416

hvigor/06-May-2025-3736

screenshots/06-May-2025-

.gitignoreD06-May-2025133 1212

README.mdD06-May-20254.4 KiB10181

build-profile.json5D06-May-20251.3 KiB5656

code-linter.json5D06-May-2025957 3434

hvigorfile.tsD06-May-2025842 215

oh-package.json5D06-May-2025808 2524

ohosTest.mdD06-May-20251.2 KiB1210

README.md

1# NdkPixelMap_js
2
3## 介绍
4
5本示例专注于PixelMap功能的演示,实现简单的图片解码、图像变换、PixelMap数据处理以及编码功能。
6
7## 效果预览
8
9| 主界面                                                   | 图片解码显示                                             |
10| -------------------------------------------------------- | -------------------------------------------------------- |
11| ![NdkPixelMap_js_1](./screenshots/NdkPixelMap_js_1.jpeg) | ![NdkPixelMap_js_2](./screenshots/NdkPixelMap_js_2.jpeg) |
12
13| PixelMap处理结果                                         | 图片编码保存                                             |
14| -------------------------------------------------------- | -------------------------------------------------------- |
15| ![NdkPixelMap_js_3](./screenshots/NdkPixelMap_js_3.jpeg) | ![NdkPixelMap_js_4](./screenshots/NdkPixelMap_js_4.jpeg) |
16
17使用说明:
18
191. 启动应用,进入主界面。
202. 在主界面,可以点击图片解码、图像变换、处理PixelMap数据、图片编码进入对应功能界面。
213. 进入图片解码界面,显示已解码完成的图片。
224. 进入图像变换界面,点击IMAGE按钮,调用TestGetImageInfo、TestAccessPixels、TestUnAccessPixels接口。
235. 进入处理PixelMap数据界面,点击PixelMap按钮,调用Transform接口,展示处理后的结果图片。
246. 进入图片编码界面,点击图片编码按钮,将图片编码并保存为文件。
25
26## 工程目录
27
28```
29NdkPixelMap_js
30entry/src/main/cpp/
31├── types
32│   └── libentry
33│       └── Index.d.ts (声明Napi接口,供ts调用)
34├── CMakeLists.txt (CMake编译配置文件)
35├── hello.cpp (C++源码)
36└── napi_init.cpp (初始化Napi接口)
37entry/src/main/ets/
38├── common
39│   └── Logger.ts (logger日志类)
40├── pages
41│   └── Index.ets (首页导航界面)
42├── pixelmap
43│   └── pages
44│       ├── DecodeImages.ets (图片解码)
45│       ├── EncodeImages.ets (图片编码)
46│       ├── ProcessPixelMapData.ets (处理PixelMap数据)
47│       └── TransfromImages.ets (图像变换)
48entry/src/main/resources/
49└── rawfile
50    └── example.jpg(图片资源)
51entry/src/ohos/ets/
52├── test
53│   ├── Ability.test.ets (UI测试代码)
54│   └── List.test.ets (测试套件列表)
55└── utils
56	└── RecourceUtil.ets (将资源文件转化为字符串类型)
57```
58
59## 具体实现
60
61+ 图片解码功能在hello中实现,源码参考hello.cpp62    + 初始化ResourceManager:通过OH_ResourceManager_InitNativeResourceManager完成。
63    + 加载Raw文件:使用OHResourceManager_OpenRawFile接口实现。
64    + 构建ImageSource:通过OH_ImageSource_Create接口创建ImageSource。
65    + 获取PixelMap:调用OH_ImageSource_CreatePixelMap接口生成位图对象。
66    + 读取图片尺寸:调用OH_ImageSource_GetImageInfo获取图片宽度高度。
67+ 图像变换功能在hello中实现,源码参考hello.cpp:
68    + 获取图片信息:通过OH_GetImageInfo接口完成。
69    + 锁定像素数据:通过OH_AccessPixels接口,获取PixelMap对象中数据内存地址,并将其锁定。
70    + 释放像素数据:通过OH_UnAccessPixels接口,释放PixelMap对象中数据内存地址
71+ 处理PixelMap数据功能在hello中实现,源码参考hello.cpp:
72    + 获取PixelMap:调用OH_PixelMap_InitNativePixelMap接口初始化NativePixelMap。
73    + 处理PixelMap:调用OH_PixelMap_SetOpacity、OH_PixelMap_Scale、OH_PixelMap_Translate、OH_PixelMap_Rotate、OH_PixelMap_Flip等接口设置透明度、缩放、偏移、旋转、翻转。
74+ 图片编码功能在hello中实现,源码参考hello.cpp:
75    + 图片编码:创建编码器对象,设置参数,获取文件描述符,调用OH_ImagePacker_PackToFile保存PixelMap到文件。
76
77## 相关权限
78
79不涉及。
80
81## 依赖
82
83不涉及。
84
85## 约束和限制
86
871. 本示例支持标准系统上运行,支持设备:RK3568;
882. 本示例支持API14版本SDK,版本号:5.0.2.57;
893. 本示例已支持使DevEco Studio 5.0.1 Release (构建版本:5.0.5.306,构建 2024年12月6日)编译运行
90
91## 下载
92
93如需单独下载本工程,执行如下命令:
94
95```
96git init
97git config core.sparsecheckout true
98echo code/DocsSample/Media/Image/NdkPixelMap_js/ > .git/info/sparse-checkout
99git remote add origin OpenHarmony/applications_app_samples
100git pull origin master
101```