1# NdkPixelMap 2 3## 介绍 4 5本示例主要实现了简单的图片解码、位图操作、图片编码功能。 6 7## 效果预览 8 9| 主界面 | 10| ---------------------------------------------- | 11|  | 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.cpp: 51 + 创建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```