鸿蒙(API 12 Beta3版)【使用Image完成图片编码】图片开发指导依赖JS对象

本文主要是介绍鸿蒙(API 12 Beta3版)【使用Image完成图片编码】图片开发指导依赖JS对象,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

开发者可以调用本模块的Native API接口,完成图片编码,即将PixelMap压缩成不同格式的存档图片。

当前支持编码为JPEG、WebP 和 PNG 格式。

适用场景

  • 图片编码转换。

    通过传入图片源ImageSource,封装成想要的格式。

  • 图片编辑

    编辑PixelMap后导出图片文件的场景,需要编码成对应图片格式文件。

开发指导

参考以下示例代码,完成图片编码的全流程,包括:创建编码器,初始化资源,编码过程,销毁资源。

在应用开发过程中,开发者应按一定顺序调用方法,执行对应操作,否则系统可能会抛出异常或生成其他未定义的行为。具体顺序可参考下列开发步骤及对应说明。

如下为图片编码调用关系图:

1

在 CMake 脚本中链接动态库

target_link_libraries(sample PUBLIC libimage_packer_ndk.z.so)

开发步骤

  1. 引入编码器头文件:image_packer_mdk.h。
// 引入编码器image_packer_mdk.h头文件。
#include "multimedia/image_framework/image_packer_mdk.h"
  1. 创建编码器实例对象。

    应用需要napi_env来创建编码器。

// 使用napi_value 承接创建的编码器对象
napi_value packer;
// 通过 napi_env 创建编码器,返回result为 IMAGE_RESULT_SUCCESS则创建成功
int32_t result = OH_ImagePacker_Create(env, &packer);
  1. 初始化资源。

    通过OH_ImagePacker_InitNative来初始化编码器原生实例对象。

// 通过 napi_env 及上述创建的编码器对象初始化原生实例对象
ImagePacker_Native* nativePacker = OH_ImagePacker_InitNative(env, packer);
  1. 编码。

    编码接口入参包括:

    • 上述过程中获取的实例对象(ImagePacker_Native)。

    • 需要编码的图像源(napi_value), PixelMap或ImageSource(未调用过CreatePixelMap)的实例对象均可。

    • 编码参数:包括编码格式与编码质量。

说明

根据MIME标准,标准编码格式为image/jpeg。当使用image编码时,编码参数中的编码格式format设置为image/jpeg,image编码后的文件扩展名可设为.jpg或.jpeg,可在支持image/jpeg解码的平台上使用。

编码接口可按输出方式分为向缓存区(内存)输出和向文件输出两种接口,入参均为上述内容。

应用可根据输出的不同需求选择编码接口。

例如向缓存区(内存)输出:

// 编码参数
struct ImagePacker_Opts_ opts;
// 配置编码格式(必须)
opts.format = "image/jpeg";
// 配置编码质量(必须)
opts.quality = 100;
// 配置输出的缓存区大小为4k(缓存区大小视应用场景定)
size_t bufferSize = 4*1024;
// 申请图片编码缓存区
uint8_t* outData = (uint8_t *)(malloc(bufferSize));
// 开始对输入source进行编码过程,返回result为 IMAGE_RESULT_SUCCESS则编码成功,同时bufferSize中包含编码实际使用缓存区大小
int32_t result = OH_ImagePacker_PackToData(nativePacker, source, &opts, outData, &bufferSize);

例如向文件输出:

// 编码参数
struct ImagePacker_Opts_ opts;
// 配置编码格式(必须)
opts.format = "image/jpeg";
// 配置编码质量(必须)
opts.quality = 100;
// 打开需要输出的文件(请确保应用有权限访问这个路径)
int fd = open("/data/test.jpg", O_RDWR | O_CREAT, S_IRUSR | S_IWUSR);
if (fd >= 0) {// 开始对输入source进行编码过程,返回result为 IMAGE_RESULT_SUCCESS则编码成功int32_t result = OH_ImagePacker_PackToFile(nativePacker, source, &opts, fd);  // 关闭输出文件  close(fd);
}
  1. 销毁编码器实例,释放资源。

说明

资源不能重复销毁。

// 调用OH_ImagePacker_Release, 销毁编码器
int32_t ret = OH_ImagePacker_Release(nativePacker);
if (result != IMAGE_RESULT_SUCCESS) {// 异常处理
} else {nativePacker = NULL; //不可重复destroy
}

最后呢

很多开发朋友不知道需要学习那些鸿蒙技术?鸿蒙开发岗位需要掌握那些核心技术点?为此鸿蒙的开发学习必须要系统性的进行。

而网上有关鸿蒙的开发资料非常的少,假如你想学好鸿蒙的应用开发与系统底层开发。你可以参考这份资料,少走很多弯路,节省没必要的麻烦。由两位前阿里高级研发工程师联合打造的《鸿蒙NEXT星河版OpenHarmony开发文档》里面内容包含了(ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战等等)鸿蒙(Harmony NEXT)技术知识点

如果你是一名Android、Java、前端等等开发人员,想要转入鸿蒙方向发展。可以直接领取这份资料辅助你的学习。下面是鸿蒙开发的学习路线图。

在这里插入图片描述

针对鸿蒙成长路线打造的鸿蒙学习文档。话不多说,我们直接看详细鸿蒙(OpenHarmony )手册(共计1236页)与鸿蒙(OpenHarmony )开发入门视频,帮助大家在技术的道路上更进一步。

  • 《鸿蒙 (OpenHarmony)开发学习视频》
  • 《鸿蒙生态应用开发V2.0白皮书》
  • 《鸿蒙 (OpenHarmony)开发基础到实战手册》
  • OpenHarmony北向、南向开发环境搭建
  • 《鸿蒙开发基础》
  • 《鸿蒙开发进阶》
  • 《鸿蒙开发实战》

在这里插入图片描述

总结

鸿蒙—作为国家主力推送的国产操作系统。部分的高校已经取消了安卓课程,从而开设鸿蒙课程;企业纷纷跟进启动了鸿蒙研发。

并且鸿蒙是完全具备无与伦比的机遇和潜力的;预计到年底将有 5,000 款的应用完成原生鸿蒙开发,未来将会支持 50 万款的应用。那么这么多的应用需要开发,也就意味着需要有更多的鸿蒙人才。鸿蒙开发工程师也将会迎来爆发式的增长,学习鸿蒙势在必行! 自↓↓↓拿
1

这篇关于鸿蒙(API 12 Beta3版)【使用Image完成图片编码】图片开发指导依赖JS对象的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1104301

相关文章

Python使用getopt处理命令行参数示例解析(最佳实践)

《Python使用getopt处理命令行参数示例解析(最佳实践)》getopt模块是Python标准库中一个简单但强大的命令行参数处理工具,它特别适合那些需要快速实现基本命令行参数解析的场景,或者需要... 目录为什么需要处理命令行参数?getopt模块基础实际应用示例与其他参数处理方式的比较常见问http

python实现svg图片转换为png和gif

《python实现svg图片转换为png和gif》这篇文章主要为大家详细介绍了python如何实现将svg图片格式转换为png和gif,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录python实现svg图片转换为png和gifpython实现图片格式之间的相互转换延展:基于Py

C 语言中enum枚举的定义和使用小结

《C语言中enum枚举的定义和使用小结》在C语言里,enum(枚举)是一种用户自定义的数据类型,它能够让你创建一组具名的整数常量,下面我会从定义、使用、特性等方面详细介绍enum,感兴趣的朋友一起看... 目录1、引言2、基本定义3、定义枚举变量4、自定义枚举常量的值5、枚举与switch语句结合使用6、枚

使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)

《使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)》PPT是一种高效的信息展示工具,广泛应用于教育、商务和设计等多个领域,PPT文档中常常包含丰富的图片内容,这些图片不仅提升了... 目录一、引言二、环境与工具三、python 提取PPT背景图片3.1 提取幻灯片背景图片3.2 提取

Python实现图片分割的多种方法总结

《Python实现图片分割的多种方法总结》图片分割是图像处理中的一个重要任务,它的目标是将图像划分为多个区域或者对象,本文为大家整理了一些常用的分割方法,大家可以根据需求自行选择... 目录1. 基于传统图像处理的分割方法(1) 使用固定阈值分割图片(2) 自适应阈值分割(3) 使用图像边缘检测分割(4)

Maven如何手动安装依赖到本地仓库

《Maven如何手动安装依赖到本地仓库》:本文主要介绍Maven如何手动安装依赖到本地仓库问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、下载依赖二、安装 JAR 文件到本地仓库三、验证安装四、在项目中使用该依赖1、注意事项2、额外提示总结一、下载依赖登

使用Python实现图像LBP特征提取的操作方法

《使用Python实现图像LBP特征提取的操作方法》LBP特征叫做局部二值模式,常用于纹理特征提取,并在纹理分类中具有较强的区分能力,本文给大家介绍了如何使用Python实现图像LBP特征提取的操作方... 目录一、LBP特征介绍二、LBP特征描述三、一些改进版本的LBP1.圆形LBP算子2.旋转不变的LB

Maven的使用和配置国内源的保姆级教程

《Maven的使用和配置国内源的保姆级教程》Maven是⼀个项目管理工具,基于POM(ProjectObjectModel,项目对象模型)的概念,Maven可以通过一小段描述信息来管理项目的构建,报告... 目录1. 什么是Maven?2.创建⼀个Maven项目3.Maven 核心功能4.使用Maven H

Python中__init__方法使用的深度解析

《Python中__init__方法使用的深度解析》在Python的面向对象编程(OOP)体系中,__init__方法如同建造房屋时的奠基仪式——它定义了对象诞生时的初始状态,下面我们就来深入了解下_... 目录一、__init__的基因图谱二、初始化过程的魔法时刻继承链中的初始化顺序self参数的奥秘默认

SpringBoot使用GZIP压缩反回数据问题

《SpringBoot使用GZIP压缩反回数据问题》:本文主要介绍SpringBoot使用GZIP压缩反回数据问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot使用GZIP压缩反回数据1、初识gzip2、gzip是什么,可以干什么?3、Spr