鸿蒙开发实战 (API 12 Beta5版)各种图片编解码格式的支持

159 篇文章 0 订阅
159 篇文章 0 订阅

场景一:展示系统原生支持的图片格式编解码的代码实现

// 获取resourceManager资源管理
const context : Context = getContext(this);
const resourceMgr : resourceManager.ResourceManager = context.resourceManager;
// 创建ImageSource
resourceMgr.getRawFileContent('test.jpg').then((fileData : Uint8Array) => {
  console.log("Succeeded in getting RawFileContent")
  // 获取图片的ArrayBuffer
  const buffer = fileData.buffer.slice(0);
  const imageSource : image.ImageSource = image.createImageSource(buffer);
}).catch((err : BusinessError) => {
  console.error("Failed to get RawFileContent")
});
// 创建PixelMap
imageSource.createPixelMap().then((pixelMap: image.PixelMap) => {
   console.log("Succeeded in creating PixelMap")
}).catch((err : BusinessError) => {
   console.error("Failed to creating PixelMap")
});

场景二:使用第三方库进行系统原生不支持的常用图片格式解码进行解码

avif格式

2.1 将libavif库添加到工程中,参考链接:libavif三方库说明

2.1.1 编译第三方库

下载本仓库

git clone https://gitee.com/openharmony-sig/tpc_c_cplusplus.git --depth=1

三方库目录结构

o    tpc_c_cplusplus/thirdparty/libavif   #三方库libavif的目录结构如下
o    ├── docs                               #三方库相关文档的文件夹
o    ├── HPKBUILD                           #构建脚本
o    ├── HPKCHECK                           #自动化测试脚本
o    ├── SHA512SUM                          #三方库校验文件
o    ├── README.OpenSource                  #说明三方库源码的下载地址,版本,license等信息
o    ├── README_zh.md                       #三方库说明文档
├── OAT.xml                            #开源扫描相关文件
  • 在tpc_c_cplusplus/lycium目录下编译三方库

编译环境的搭建参考准备三方库构建环境

cd tpc_c_cplusplus/lycium
./build.sh libavif
  • 三方库头文件及生成的库

在lycium目录下会生成usr目录,该目录下存在已编译完成的32位和64位三方库和头文件

libavif/arm64-v8a   libavif/armeabi-v7a

2.1.2 应用中使用第三方库

  • 拷贝动态库到\\entry\libs\${OHOS_ARCH}\目录: 动态库需要在\\entry\libs\${OHOS_ARCH}\目录,才能集成到hap包中,所以需要将对应的so文件拷贝到对应CPU架构的目录
  • 在IDE的cpp目录下新增thirdparty目录,将编译生成的库拷贝到该目录下,如下图所示

    image.png

  • 在最外层(cpp目录下)CMakeLists.txt中添加如下语句
    #将三方库加入工程中
    target_link_libraries(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/${OHOS_ARCH}/libaom.a
    ${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/${OHOS_ARCH}/libavif.so.16
    ${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/${OHOS_ARCH}/libgmock.a
    ${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/${OHOS_ARCH}/libgmock_main.a
    ${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/${OHOS_ARCH}/libgtest.a
    ${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/${OHOS_ARCH}/libgtest_main.a
    ${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/${OHOS_ARCH}/libjpeg.a
    ${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/${OHOS_ARCH}/libpng.a
    ${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/${OHOS_ARCH}/libpng16.a
    ${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/${OHOS_ARCH}/libyuv.so
    )
    #将三方库的头文件加入工程中
    target_include_directories(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/libavif/${OHOS_ARCH}/include
    ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/libyuv/${OHOS_ARCH}/include
    ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/libaom/${OHOS_ARCH}/include
    ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/jpeg/${OHOS_ARCH}/include
    ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/libpng/${OHOS_ARCH}/include
    ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/googletest/${OHOS_ARCH}/include)

2.1.3 测试第三方库

三方库的测试使用原库自带的测试用例来做测试,准备三方库测试环境

进入到构建目录(arm64-v8a-build为构建64位的目录,armeabi-v7a-build为构建32位的目录),执行如下操作步骤:

  • 配置环境变量 执行如下命令:
    export LD_LIBRARY_PATH=${LYCIUM_ROOT}/usr/libyuv/${ARCH}/lib:${LYCIUM_ROOT}/usr/libavif/${ARCH}/lib:${LYCIUM_ROOT}/usr/jpeg/${ARCH}/lib:${LYCIUM_ROOT}/usr/libaom/${ARCH}/lib:${LYCIUM_ROOT}/usr/libpng/${ARCH}/lib:$LD_LIBRARY_PATH

    注意:LYCIUM_ROOT代表lycium所在目录的绝对路径;ARCH代表构建架构,64位为arm64-v8a,32位为armeabi-v7a。

  • 执行测试项:
    ctest

    image.png

    实现方式参考上述heif格式,策略相通均为C++侧读取图片数据转换为pixelMap返回给TS侧。

最后

小编在之前的鸿蒙系统扫盲中,有很多朋友给我留言,不同的角度的问了一些问题,我明显感觉到一点,那就是许多人参与鸿蒙开发,但是又不知道从哪里下手,因为资料太多,太杂,教授的人也多,无从选择。有很多小伙伴不知道学习哪些鸿蒙开发技术?不知道需要重点掌握哪些鸿蒙应用开发知识点?而且学习时频繁踩坑,最终浪费大量时间。所以有一份实用的鸿蒙(HarmonyOS NEXT)文档用来跟着学习是非常有必要的。 

为了确保高效学习,建议规划清晰的学习路线,涵盖以下关键阶段:

 →【纯血版鸿蒙全套最新学习文档】希望这一份鸿蒙学习文档能够给大家带来帮助~


 鸿蒙(HarmonyOS NEXT)最新学习路线

该路线图包含基础技能、就业必备技能、多媒体技术、六大电商APP、进阶高级技能、实战就业级设备开发,不仅补充了华为官网未涉及的解决方案

路线图适合人群:

IT开发人员:想要拓展职业边界
零基础小白:鸿蒙爱好者,希望从0到1学习,增加一项技能。
技术提升/进阶跳槽:发展瓶颈期,提升职场竞争力,快速掌握鸿蒙技术

2.学习视频+学习PDF文档

HarmonyOS Next 最新全套视频教程 (鸿蒙语法ArkTS、TypeScript、ArkUI教程……)

​​

 纯血版鸿蒙全套学习文档(面试、文档、全套视频等)

                   

​​​​鸿蒙APP开发必备

​​

总结

【纯血版鸿蒙全套最新学习文档】

总的来说,华为鸿蒙不再兼容安卓,对程序员来说是一个挑战,也是一个机会。只有积极应对变化,不断学习和提升自己,才能在这个变革的时代中立于不败之地。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值