HarmonyOS鸿蒙Next中关于获取到的图片,如何在图片上添加时间水印

HarmonyOS鸿蒙Next中关于获取到的图片,如何在图片上添加时间水印 在拍照或选择一张照片后,如何在图片上添加一个时间水印,没有找到相应的API

12 回复

可以尝试下使用opencv直接对图像数据进行处理。

更多关于HarmonyOS鸿蒙Next中关于获取到的图片,如何在图片上添加时间水印的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


这个虽然可以但也太难了,能像android 位图一样就好了,

你这个相当于是在底层添加的水印,不是我想要的,我是想在直接在照片上添加一个时间水印,

如果只是显示时添加,可考虑通用属性“浮层”, 可加文字在图片表面:

.overlay({value: string, options?: {align?: Alignment, offset?: {x?: number, y?: number}})

文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V2/ts-universal-attributes-overlay-0000001427744788-V2

需求是在照片上打个时间水印,android好做,换成鸿蒙还不知道怎么弄。

这个应该可以实现,只是这只对UI显示有用,不会修改原图,如果只是防止拷屏可用。

这个不会修改原图,但可以再利用componentSnapshot.get生成新的图片

参考:https://developer.huawei.com/consumer/cn/forum/topic/0208150740444982087?fid=0109140870620153026

没有这样的API ,但是可以把图片上传到阿里云OSS上去,然后使用的时候通过拼接参数实现水印。

https://www.alibabacloud.com/help/zh/oss/user-guide/add-watermarks

在HarmonyOS鸿蒙Next中,若要在获取到的图片上添加时间水印,可以使用PixelMapCanvas类进行操作。首先,通过ImageSource加载图片并生成PixelMap。接着,使用CanvasPixelMap上绘制时间水印。具体步骤如下:

  1. 加载图片生成PixelMap: 使用ImageSource从文件或网络加载图片,并调用createPixelmap方法生成PixelMap对象。

  2. 创建Canvas对象: 通过PixelMap创建Canvas对象,Canvas允许在PixelMap上进行绘制操作。

  3. 绘制时间水印: 使用CanvasdrawText方法,在指定位置绘制时间字符串。可以通过TextPaint设置字体大小、颜色等属性。

  4. 保存处理后的图片: 将处理后的PixelMap保存为图片文件,使用ImagePackerPixelMap编码为指定格式的文件。

示例代码如下:

import image from '@ohos.multimedia.image';
import util from '@ohos.util';

// 加载图片生成PixelMap
let imageSource = image.createImageSource("file://path/to/image.jpg");
let pixelMap = await imageSource.createPixelmap();

// 创建Canvas对象
let canvas = new image.Canvas(pixelMap);

// 设置时间水印文本
let time = new util.DateTime().toString();
let textPaint = new image.TextPaint();
textPaint.color = "#FFFFFF";
textPaint.fontSize = 30;

// 在图片上绘制时间水印
canvas.drawText(time, 10, 50, textPaint);

// 保存处理后的图片
let imagePacker = image.createImagePacker();
let packOpts = { format: "image/jpeg", quality: 100 };
let arrayBuffer = await imagePacker.packing(pixelMap, packOpts);
// 将arrayBuffer保存为文件

在HarmonyOS鸿蒙Next中,可以通过ImageCanvas组件在图片上添加时间水印。首先,使用Image组件加载图片,然后通过Canvas绘制时间文本。具体步骤如下:

  1. 使用Image组件加载图片。
  2. 创建Canvas对象,并设置其大小与图片一致。
  3. 使用CanvasdrawText方法绘制当前时间文本,设置字体、颜色和位置。
  4. 将绘制后的Canvas内容保存为新的图片。

示例代码:

Canvas canvas = new Canvas(bitmap);
Paint paint = new Paint();
paint.setColor(Color.WHITE);
paint.setTextSize(30);
canvas.drawText(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()), 10, 50, paint);
回到顶部