HarmonyOS基于图像模块实现图库图片的四种常见操作
头像 宋你一朵小红花 2021-02-22 10:03:43    发布
2792 浏览 67 点赞 10 收藏

HarmonyOS应该如何上手?有没有实操项目可供入门?我们致力于挖掘生动有趣的案例,用浅显易懂的文字,简单易上手的代码,呈现HarmonyOS开发的多样性,让你一看就懂,一敲就会!

在HarmonyOS中,由图像模块支持图像业务的开发,常见功能如图像解码、图像编码、基本的位图操作、图像编辑等。当然,开发者也可以通过接口组合来实现更复杂的图像处理逻辑。

在这个教程中,我们将以图库图片中旋转、剪裁、缩放、镜像四种常见操作为例,给大家介绍HarmonyOS图像编解码的相关开发指导。

在HUAWEI DevEco Studio创建一个Phone的Empty Feature Ability(Java)模板工程,我们将在这个模板中完成操作。

我们需要先准备一张1024*768的JPG格式图片作为示例,放在我们创建的手机工程项目中的entry/src/main/resources/base/media目录下。

HarmonyOS基于图像模块实现图库图片的四种常见操作

1、将图片转换为PixelMap对象

为了便于后续图片显示及处理,我们需要对图片进行解码处理。图像解码就是将所支持格式的存档图片解码成统一的PixelMap图像。当前HarmonyOS支持的图片格式包括JPEG、PNG、GIF、HEIF、WebP、BMP。

这个例子中我们提供的是getPixelMapFromResource函数,可以将已经存放在相关目录下的图片资源转换为PixelMap图像,其中入参为图片的资源ID。

示例代码如下:

HarmonyOS基于图像模块实现图库图片的四种常见操作

2、图片旋转、缩放、裁剪参数设置

这个步骤中,我们将对图片进行旋转,缩放,裁剪处理。本Codelabs中的图像处理是基于1024*768的图像尺寸,实现如下功能:

旋转:点击一次旋转按钮将进行90度旋转;

缩放:点击缩放按钮将按2:1比例进行缩放,再次点击还原;

裁剪:点击一次裁剪按钮将在保证宽度不变的情况下对高度进行400像素的剪裁。

相关参数设置如下所示:

HarmonyOS基于图像模块实现图库图片的四种常见操作

3、图片镜像操作处理

除了旋转、缩放、裁剪等操作,常见的图片操作处理还有镜像。所谓图片镜像,就是对图片以纵坐标为轴制作对称图片。本例采用对图像Canvas画布的镜像操作实现图片的镜像显示。

示例代码如下所示:

HarmonyOS基于图像模块实现图库图片的四种常见操作

4、创建界面基础组件

这个部分主要针对我们需要展示的界面文本和按钮进行创建,我们需要创建的内容有界面标题文本——“HarmonyOS图像开发”,四个对应不同图片处理的按钮——“旋转”、“裁剪”、“缩放”、“镜像”。

标题文本创建:

HarmonyOS基于图像模块实现图库图片的四种常见操作

“旋转”按钮绘制:

HarmonyOS基于图像模块实现图库图片的四种常见操作

“裁剪”按钮绘制:

HarmonyOS基于图像模块实现图库图片的四种常见操作

“缩放”按钮绘制:

HarmonyOS基于图像模块实现图库图片的四种常见操作

“镜像”按钮绘制:

HarmonyOS基于图像模块实现图库图片的四种常见操作

图片位置:

HarmonyOS基于图像模块实现图库图片的四种常见操作

最终实现如下效果:

HarmonyOS基于图像模块实现图库图片的四种常见操作

需要注意的是:以上代码仅demo演示参考使用,产品化的代码需要考虑数据校验和国际化。

看到这里,你是不是已经对于HarmonyOS本地图片的图像解码和常见的四种图片处理操作有了一定的了解,那么就赶紧上手试试吧,点击获取源码链接,上手尝试一下哦~

©本站发布的所有内容,包括但不限于文字、图片、音频、视频、图表、标志、标识、广告、商标、商号、域名、软件、程序等,除特别标明外,均来源于网络或用户投稿,版权归原作者或原出处所有。我们致力于保护原作者版权,若涉及版权问题,请及时联系我们进行处理。
分类
其它
头像

宋你一朵小红花

我还没有写个人简介......

881

帖子

0

提问

1679

粉丝

关注
热门推荐
地址:北京市朝阳区北三环东路三元桥曙光西里甲1号第三置业A座1508室 商务内容合作QQ:2291221 电话:13391790444或(010)62178877
版权所有:电脑商情信息服务集团 北京赢邦策略咨询有限责任公司
声明:本媒体部分图片、文章来源于网络,版权归原作者所有,我司致力于保护作者版权,如有侵权,请与我司联系删除
京ICP备:2022009079号-2
京公网安备:11010502051901号
ICP证:京B2-20230255