
多种图片操作实现方法鸿蒙示例代码
本文原创发布在华为开发者社区。
介绍
本实例主要展示了图片应用场景相关demo。主要包括了图片预览、图片编辑美化、场景变化前后对比、图片切割九宫格、两张图片拼接、AI抠图、图片加水印等场景示例。
图片预览
使用说明
点击图片,进入图片预览界面。可对图片进行缩放、拖拽等操作。
效果预览
实现思路
1、给图片组件的scale、width、height、offset等属性绑定相关响应式变量
2、监听相关手势操作并执行相关操作逻辑,如:二指缩放、单指滑动、双击等
图片编辑美化
使用说明
可对图片编辑,包含裁剪、旋转、色域调节(本章只介绍亮度、透明度、饱和度)、滤镜等功能。
效果预览
实现思路
1、通过pixelMap的crop方法来裁剪图片
2、通过pixelMap的rotate方法来旋转图片
3、通过对每个像素点的rgb值转换来改变亮度、透明度
4、通过effectKit来添加滤镜
场景变化前后对比
使用说明
通过拖拽移动按钮,来展示两张图片的不同
效果预览
实现思路
1.创建三个Stack组件,用来展示装修前后对比图,第一个和第三个Stack分别存放装修前的图片和装修后的图片,zIndex设置为1。第二个Stack存放按钮的图片,zIndex设置为2,这样按钮的图片就会覆盖在两张装修图片之上。
2.将Image组件放在Row容器里,将Row容器的宽度设置为状态变量,再利用clip属性对于Row容器进行裁剪。
3.右边的Image组件与左边同样的操作,但是新增了一个direction属性,使元素从右至左进行布局,为的是让Row从左侧开始裁剪。
4.中间的Image组件通过手势事件中的滑动手势对Image组件滑动进行监听,对左右Image组件的宽度进行计算从而重新布局渲染。
图片切割九宫格
使用说明
通过图库选择一张图片,将其切割成九宫格展示,然后可保存到图库中
效果预览
实现思路
根据图片宽高信息以及要分割的行数列数,计算出每张图片的左上角起始位置的坐标及宽高,根据这些信息获取对应的pixelMap
两张图片拼接
使用说明
通过图库选择一张图片,可横向拼接成一张图,也可竖向拼接成一张图。然后保存到图库
实现效果
实现思路
获取要拼接图片的信息,计算出拼接后图片的大小等信息,根据这些信息创建出一个pixelMap。然后将要拼接的图片的pixelMap写入创建的空的pixelMap即可
AI抠图
使用说明
长按需要被抠图的元素并拖拽
效果预览
实现思路
将Image接口的enableAnalyzer属性设为true
图片加水印
使用说明
从图库中选取图片,点击添加水印按钮。即可添加上水印
效果预览
实现思路
1.根据canvas容器实际大小以及图片的实际大小,将选择的图片绘制到canvas中
2.在画布上绘制水印内容
3.根据图片实际大小将加水印的canvas重新绘制一遍,然后将绘制后的pixelMap保存到土库中
