HarmonyOS 鸿蒙Next拍照时如何添加水印信息

发布于 1周前 作者 h691938207 来自 鸿蒙OS

HarmonyOS 鸿蒙Next拍照时如何添加水印信息 拍照时如何添加水印信息,麻烦提供示例代码

2 回复

拍照添加水印:

方案:使用cameraPicker拉起系统相机拍照,拿到返回的picker.PickerResult.resultUri后使用fs.openSync读出图片文件转化为pixelMap,使用image组件渲染在页面上,在保存图片的时候通过drawing.TextBlob.makeFromString方法绘制水印后保存

第一步:使用cameraPicker拉起系统相机

import picker from '@ohos.multimedia.cameraPicker';
import camera from '@ohos.multimedia.camera';

async function openCamera() {
try {
let pickerProfile: picker.PickerProfile = {
cameraPosition: camera.CameraPosition.CAMERA_POSITION_BACK
};
let pickerResult: picker.PickerResult = await picker.pick(getContext(this),
[picker.PickerMediaType.PHOTO, picker.PickerMediaType.VIDEO], pickerProfile);
console.log("the pick pickerResult is:" + JSON.stringify(pickerResult));
// ...
} catch (error) {
let err = error as BusinessError;
console.error(`the pick call failed. error code: ${err.message}`);
}
}

第二步:将相机拍摄的照片渲染在页面中,使用fs.readSync读出文件字节流,再使用image.createImageSource创建图片资源管理器获取到图片的pixelMap

@State pixelMap: image.PixelMap | null = null
async function openCamera() {
try {
// ...
if (pickerResult.resultUri) {
this.showImage = true
}
let file = fs.openSync(pickerResult.resultUri)
let buffer = new ArrayBuffer(fs.statSync(file.fd).size)
fs.readSync(file.fd, buffer)
let imageSource: image.ImageSource = image.createImageSource(buffer)
imageSource.getImageInfo((err, value) => {
if (err) {
return;
}
let opts: image.DecodingOptions = {
editable: true,
desiredSize: {
height: value.size.height,
width: value.size.width
}
};
imageSource.createPixelMap(opts, async (err, pixelMap) => {
this.pixelMap = pixelMap

})
})
} catch (error) {
let err = error as BusinessError;
console.error(`the pick call failed. error code: ${err.message}`);
}
}

function build() {
// ...
if(this.showImage) {
Image(this.pixelMap).width("100%")
// ...
}
}

第三步:使用drawing.TextBlob.makeFromString绘制水印后 使用SaveButton保存在系统相册中

SaveButton()
.onClick(async (event: ClickEvent, result: SaveButtonOnClickResult) => {
if (result == SaveButtonOnClickResult.SUCCESS) {
try {
let context = getContext(this);
let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context);
let uri = await phAccessHelper.createAsset(photoAccessHelper.PhotoType.IMAGE, 'png'); // 创建媒体文件
saveToFile(this.addWaterMask(this.pixelMap!), uri);
} catch (err) {
console.error('createAsset failed, message = ', err);
}
} else {
console.error('SaveButtonOnClickResult createAsset failed');
}
})

更多关于HarmonyOS 鸿蒙Next拍照时如何添加水印信息的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS(鸿蒙)系统中为拍照添加水印信息,通常可以通过相机应用自身的设置来实现,具体操作步骤如下:

  1. 打开相机应用:首先,在手机上找到并打开相机应用。

  2. 进入设置菜单:在相机界面,通常可以通过点击屏幕右上角的设置图标(可能是一个齿轮形状)来进入相机设置菜单。

  3. 查找水印选项:在设置菜单中,浏览各项设置,找到与“水印”相关的选项。这个选项可能直接命名为“水印”或者类似的表述,如“照片水印”、“时间水印”等。

  4. 开启水印功能:点击水印选项,然后选择你想要添加的水印类型。鸿蒙系统可能会提供多种预设的水印,如机型水印、时间水印、位置水印等,用户可以根据需要开启相应的水印功能。

  5. 拍照验证:设置好水印后,退出设置菜单,开始拍照。拍摄的照片上应该就会显示你所选择的水印信息了。

请注意,不同版本的鸿蒙系统可能在界面布局和设置选项上略有差异,但基本的操作流程是相似的。如果以上步骤在你的设备上无法找到水印设置,可能是因为你的设备或系统版本不支持该功能。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部