当前位置:首页 > uni-app

uniapp拍照加水印

2026-02-06 14:22:52uni-app

拍照功能实现

使用uniapp的uni.chooseImageuni.chooseMedia API调用系统相机或相册,支持多平台兼容。示例代码:

uniapp拍照加水印

uni.chooseImage({
  count: 1,
  sourceType: ['camera'],
  success: (res) => {
    const tempFilePath = res.tempFilePaths[0];
    this.addWatermark(tempFilePath); // 调用加水印方法
  }
});

水印生成方案

Canvas绘制水印

uniapp拍照加水印

  1. 创建Canvas画布,加载图片后绘制文字或图片水印:
    const ctx = uni.createCanvasContext('watermarkCanvas');
    ctx.drawImage(tempFilePath, 0, 0, width, height);
    ctx.setFontSize(20);
    ctx.fillText('水印文字', x, y);
    ctx.draw();

Base64水印叠加
通过uni.getFileSystemManager读取图片为Base64,使用第三方库(如canvas-tools)处理水印后保存:

const fs = uni.getFileSystemManager();
fs.readFile({
  filePath: tempFilePath,
  encoding: 'base64',
  success: (res) => {
    // 使用库处理Base64数据并添加水印
  }
});

水印样式配置

  • 文字水印:支持自定义字体、颜色、透明度(通过ctx.globalAlpha设置)
  • 图片水印:需预先准备PNG透明水印图,通过drawImage叠加
  • 平铺水印:循环计算坐标位置,重复绘制水印

保存与上传

使用uni.canvasToTempFilePath将Canvas转为图片,再通过uni.saveImageToPhotosAlbum保存到相册或调用上传接口:

uni.canvasToTempFilePath({
  canvasId: 'watermarkCanvas',
  success: (res) => {
    uni.saveImageToPhotosAlbum({
      filePath: res.tempFilePath
    });
  }
});

注意事项

  • iOS系统需在manifest.json中配置相机和相册权限
  • Canvas在部分安卓机型可能存在兼容性问题,建议测试后调整绘制逻辑
  • 水印内容需符合法律法规,避免侵权风险

标签: 水印uniapp
分享给朋友:

相关文章

vue实现网页水印

vue实现网页水印

添加静态水印 在Vue中可以通过CSS或Canvas实现静态水印。CSS方法适合简单文字水印,Canvas适合复杂水印效果。 <template> <div class="wa…

uniapp 推送

uniapp 推送

uniapp 推送实现方法 uniapp 推送功能可以通过多种方式实现,主要包括使用第三方推送服务、原生插件或云服务。以下是几种常见的实现方案: 使用 UniPush 服务 UniPush 是…

uniapp极光推送

uniapp极光推送

uniapp极光推送集成步骤 准备工作 注册极光推送开发者账号,创建应用获取AppKey。确保uniapp项目已配置好原生插件支持。 安装插件 在uniapp项目manifest.json文件中,选…

uniapp样式库

uniapp样式库

uniapp 常用样式库推荐 uView UI uView 是专为 uniapp 设计的多端兼容 UI 框架,提供丰富的组件和工具类。支持 Vue3 组合式 API,内置主题定制功能,常用于快速构建企…

uniapp树形选择

uniapp树形选择

uniapp树形选择实现方法 使用uni-data-checkbox组件 uniapp内置的uni-data-checkbox组件支持树形结构选择,适用于多级分类场景。配置时需要将数据格式化为树形结构…

uniapp视频

uniapp视频

uniapp视频开发基础 uniapp支持通过video组件实现视频播放功能,该组件兼容多端(H5、小程序、App等),基本用法如下: <template> <video…