相关问题
HarmonyOS拍照后图片添加水印
336浏览 • 1回复 待解决
HarmonyOS是否支持图片添加水印
663浏览 • 1回复 待解决
HarmonyOS 如何给 app 添加水印
883浏览 • 1回复 待解决
HarmonyOS windows级别添加水印
348浏览 • 1回复 待解决
HarmonyOS 如何在app内全页面添加水印
464浏览 • 1回复 待解决
HarmonyOS PDF添加水印后展示白屏
449浏览 • 1回复 待解决
HarmonyOS 有没有对UI添加水印的方法
418浏览 • 1回复 待解决
canvas如何实现水印效果
1450浏览 • 1回复 待解决
HarmonyOS 拍照后的图片加水印
399浏览 • 1回复 待解决
HarmonyOS 在用户不需操作和预览的情况下,实现给图片添加水印
312浏览 • 1回复 待解决
HarmonyOS 使用canvas进行图片水印操作
485浏览 • 1回复 待解决
#鸿蒙通关秘籍# 如何使用Canvas组件在HarmonyOS中实现页面和图片的水印添加?
416浏览 • 0回复 待解决
#鸿蒙通关秘籍#如何使用Canvas组件和OffscreenCanvas实现水印功能?
968浏览 • 1回复 待解决
基于原生的水印添加能力
1300浏览 • 1回复 待解决
HarmonyOS 请提供一个给拍摄/从相册选择图片添加水印,控制照片大小、质量的demo
676浏览 • 1回复 待解决
HarmonyOS 用Canvas绘制文字水印,独立出全局水印方法,加上判断水印就无法生效
271浏览 • 1回复 待解决
HarmonyOS 如何给UI界面添加一个水印布局
882浏览 • 1回复 待解决
HarmonyOS 如何使用全局水印
332浏览 • 1回复 待解决
如何直接通过函数去编辑图片,比如pixelMap或者说给图片加水印文字这种操作
1725浏览 • 1回复 待解决
HarmonyOS 水印相机、水印视频
578浏览 • 1回复 待解决
HarmonyOS 如何使用Canvas画扇形
668浏览 • 1回复 待解决
HarmonyOS 如何给windows添加全局水印并通过appstorage设置内容和管理开关?
673浏览 • 2回复 待解决
如何使用canvas绘制圆角矩形
927浏览 • 1回复 待解决
HarmonyOS 如何使用canvas绘制虚线
315浏览 • 1回复 待解决
HarmonyOS使用canvas如何使文字垂直居中
1056浏览 • 1回复 待解决
需要实现为image添加文字、增加马赛克、水印等功能。
需要支持如下功能点:
当前已实现功能:
暂未实现功能点:
使用的核心API
核心代码解释
功能1:从图片导入图片
导入图片主要使用picker.PhotoViewPicker()API拉起图片选择图片,相关代码如下:
从图库中读取图片后使用fs的相关接口将其转化为ArrayBuffer方便后期操作,拿到该图片的buffer以后就可以在canvas中绘制该图片了,因为屏幕大小是固定的,显示图片的区域也是固定的,而图片的大小是可变的,所以在绘制图片的时候我们需要进行一些比例换算,这里只做了竖图的适配,暂未实现横图适配,核心代码如下:
代码解释:
主要逻辑就是在createPixelMap的回调中,通过getComponentRect("imageContainer")接口获取屏幕中实际显示图片区域的宽度,然后除以图片的实际宽度得到一个缩放比例imageScale,在绘制的时候将画笔进行矩阵变换x与y轴都缩放该比例,然后使用drawImage从画布的左上角开始绘制,这样可以得到一张等比例的图片会知道界面中
功能2:添加水印/文字
当前实现的水印就是文字水印,也可以绘制图片水印等等,这个可以根据需要自己自定义,主要实现思路就是在当前的画布中在指定的位置继续绘制文字/图片即可
功能3:保存到本地图库
这里保存可以有两种方式,一种是保存到图库,一种是保存到文件管理,实现方式不一样
保存到图库
ps: 这里有一点说明下,当前实现的仅仅只是恢复原图的像素比例,还是会有图片被压缩导致的轻微失真现象,该问题在想办法优化中
保存到图库官网接口更改了需要使用安全控件来保存,核心代码如下
代码解释:
主要是使用photoAccessHelperAPI接口获取到图库的uri地址,然后因为我们在绘制图片的时候是对图片进行了缩放的,现在需要吧缩放的图片还原回原来的大小,所以我们新建了一个OffscreenCanvas,大小就是原图的大小,然后获取我们添加了水印的图片——也就是我们页面中能看到的canvas,主要是使用getPixelMap接口,将该数据绘制在OffscreenCanvas中然后通过saveToFile保存下来,saveToFile代码如下
完整代码
Index.ets
utils.ts