教你一招:在微信小程序中为用户上传的图片添加时间水印

news2024/9/23 15:41:15

在微信小程序开发过程中,我们常常需要在图片上添加水印,以保护版权或增加个性化元素。本文将为大家介绍如何在微信小程序中为图片添加时间水印,让你的小程序更具特色。

实现步骤:

1. 创建页面结构

pages目录下创建一个名为uploadWatermark的文件夹,并在该文件夹中创建以下四个文件:uploadWatermark.wxmluploadWatermark.wxssuploadWatermark.jsuploadWatermark.json

2. 编写uploadWatermark.wxml
<view class="container">
  <button bindtap="chooseImage">选择图片</button>
  <image src="{{watermarkedImage}}" mode="aspectFit" class="watermarked-image" wx:if="{{watermarkedImage}}"></image>
</view>
<canvas canvas-id="watermarkCanvas" style="width: 100%; height: 100%; position: absolute; top: 0; left: 0; display: none;"></canvas>
3、编写uploadWatermark.wxss
.container {
  position: relative;
  width: 100%;
}

button {
  margin: 20px;
}

.watermarked-image {
  width: 100%;
}
4、编写uploadWatermark.js
Page({
  data: {
    watermarkedImage: '', // 添加水印后的图片
  },

  // 选择图片
  chooseImage: function() {
    const that = this;
    wx.chooseImage({
      count: 1,
      sizeType: ['original', 'compressed'],
      sourceType: ['album', 'camera'],
      success(res) {
        // tempFilePaths是选择的图片的本地临时文件路径列表
        that.addTimeWatermark(res.tempFilePaths[0]);
      }
    })
  },

  // 添加时间水印
  addTimeWatermark: function(imagePath) {
    const ctx = wx.createCanvasContext('watermarkCanvas', this);
    ctx.drawImage(imagePath, 0, 0, 300, 150); // 假设图片大小为300x150,根据实际情况调整

    // 设置水印文字
    const time = new Date().toLocaleString();
    ctx.setFontSize(14);
    ctx.setFillStyle('rgba(255, 255, 255, 0.5)'); // 半透明白色
    ctx.setTextAlign('right');
    ctx.fillText(time, 290, 140); // 根据实际情况调整位置

    // 绘制水印
    ctx.draw(false, () => {
      wx.canvasToTempFilePath({
        canvasId: 'watermarkCanvas',
        success: (res) => {
          this.setData({
            watermarkedImage: res.tempFilePath
          });
        },
        fail: (err) => {
          console.error(err);
        }
      }, this);
    });
  }
});

运行效果:

在微信开发者工具中预览uploadWatermark页面。点击“选择图片”按钮,用户可以选择从相册或相机上传图片。上传后,图片将显示在页面上,并且会添加当前时间水印。

总结:

通过以上步骤,我们实现了在微信小程序中允许用户上传图片并添加时间水印的功能。这个功能不仅实用,而且可以增强用户体验。希望这个教程对你在开发微信小程序时有所帮助!

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2157897.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用思科搭建企业网规划训练,让网络全部互通,使用规则提高工作效率。

1. 企业背景&#xff1a; 某企业分为销售部、行政部、人力资源部、财务部、业务部、接待中心等主要六个部门&#xff1b;配置网管中心&#xff0c;允许网络管理员登录企业交换机和路由器对企业网络进行管理&#xff1b;配置服务器集群&#xff0c;设置FTP、DNS、WEB服务器&am…

一个基于 Tauri、Vite 5、Vue 3 和 TypeScript 构建的即时通讯系统,牛啊牛啊!(附源码)

这段时间正在学习桌面端开发&#xff0c;目前了解了Electron和Tauri,在搜索教程的时候发现了一位大佬用Tauri开发了个即时通讯的软件&#xff0c;并且技术栈用的也是VUE3和TypeScript&#xff0c;所以今天就给大家分享一下这个项目——HuLa HuLa HuLa 是一个基于 Tauri、Vite …

Skyeye 云智能制造 v3.14.6 发布,ERP 商城

Skyeye 云智能制造&#xff0c;采用 Springboot winUI 的低代码平台、移动端采用 UNI-APP。包含 30 多个应用模块、50 多种电子流程&#xff0c;CRM、PM、ERP、MES、ADM、EHR、笔记、知识库、项目、门店、商城、财务、多班次考勤、薪资、招聘、云售后、论坛、公告、问卷、报表…

【Elasticsearch系列廿一】ES7 SQL 新特性

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

嵌入式设备网口down后再up时不能link?

&#x1f3c6;本文收录于《CSDN问答解惑-专业版》专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收…

[ComfyUI]又降了,只需10G显存玩转CogVideoX5B图生视频,效果太惊艳!

在数字艺术和创意领域&#xff0c;[ComfyUI]一直致力于为用户提供最优质的技术和工具。今天&#xff0c;我们激动地宣布&#xff0c;[ComfyUI]再次取得重大突破——只需10G显存&#xff0c;用户就能轻松玩转CogVideoX5B图生视频&#xff0c;创造出令人惊艳的效果&#xff01; …

【人工智能】在大型活动中的应用案例

人工智能在娱乐大型活动中的应用 ## 作者主页: 知孤云出岫 目录 **人工智能在娱乐大型活动中的应用****1. 引言****2. 智能票务与入场管理****2.1 动态定价与票务预测****2.2 生物识别技术快速入场****2.3 区块链技术防伪票务管理** **3. 智能观众互动与个性化体验****3.1 个性…

Java语言程序设计基础篇_编程练习题**18.35(H 树分形)

目录 题目&#xff1a;**18.35(H 树分形) 代码示例 代码解释 输出结果 题目&#xff1a;**18.35(H 树分形) 一个H 树分形(本章开始部分介绍过&#xff0c;如图18-1)如下定义: 1)从字母H开始。H的三条线长度一样&#xff0c;如图 18-1a 所示。 2)字母H(以它的 sans-serif …

归并算法实现

1.归并算法图解 2.归并算法代码 package com.suanfa.sort;import java.util.Arrays;/*** 归并算法*/ public class MergeSort {/*** 拆的时间复杂度logn * 并的时间复杂度n nlogn** param arr* param left* param right*/public static void sortMerge(int[] arr, int left, …

第十一章 从0-1搭建一个简单的JavaWeb系统(三)

目录 一、工程代码结构 二、代码实现 三、运行效果 四、未完待续 本章节的每一段代码&#xff0c;建议全部自己敲一遍&#xff0c;加深印象&#xff0c;切勿直接复制黏贴。 一、工程代码结构 本章节实现注销&#xff08;退出&#xff09;功能&#xff0c;以下图片中标红的…

19个邮件群发小技巧,最大水平充分利用邮件营销

邮件群发在现代通信中占据着非常重要的位置。无论是在商业环境还是个人生活中&#xff0c;它都有着广泛的应用。无论您是公司的市场推广专家&#xff0c;还是社交团体的筹办者&#xff0c;掌握有效的邮件群发技巧会帮助您更好地传递信息、节约时间和提升工作效率。 确定目标受众…

【Ubuntu】Ubuntu安装编译C/C++环境简易版教程

环境 操作系统&#xff1a;ubuntu-22.04.4-desktop-amd64.iso 安装 第一步:更新软件包列表&#xff0c;检查可用的软件包更新 sudo apt update在这一步&#xff0c;我们可以确保系统中的软件包列表是最新的&#xff0c;以便后续的软件包管理操作。 第二步&#xff1a;安装…

craco-less使用问题

craco-less使用问题 问题背景 前端是用React搭建&#xff0c;使用craco配置&#xff0c;相关库或插件版本如下 "craco/craco": "^7.1.0","react-scripts": "^5.0.1","craco-less": "^3.0.1"在生产环境&#xff…

JAVA开源项目 甘肃非物质文化网站 计算机毕业设计

本文项目编号 T 043 &#xff0c;文末自助获取源码 \color{red}{T043&#xff0c;文末自助获取源码} T043&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 查…

【无人机设计与控制】基于蜣螂优化算法求解多无人机集群路径规划问题

摘要 本文基于蜣螂优化算法&#xff08;Dung Beetle Optimization, DBO&#xff09;研究了多无人机路径规划问题。目标是优化多无人机的飞行轨迹&#xff0c;在避免障碍物的同时&#xff0c;尽量减少能量消耗并保持集群内的通信。为提高搜索效率和准确性&#xff0c;对DBO进行…

AJAX 入门 day3 XMLHttpRequest、Promise对象、自己封装简单版的axios

目录 1.XMLHttpRequest 1.1 XMLHttpRequest认识 1.2 用ajax发送请求 1.3 案例 1.4 XMLHttpRequest - 查询参数 1.5 XMLHttpRequest - 数据提交 2.Promise 2.1 Promise认识 2.2 Promise - 三种状态 2.3 案例 3.封装简易版 axios 3.1 封装_简易axios_获取省份列表 3…

Spring Boot 中实现任务后台处理的几种常见方式

​ 博客主页: 南来_北往 系列专栏&#xff1a;Spring Boot实战 前言 在现代应用程序中&#xff0c;后台处理对于处理发送电子邮件、处理文件、生成报告等任务至关重要。 Spring Boot 提供了多种机制来高效地实现后台任务。本文探讨了在 Spring Boot 中处理后台处理的各…

STM32调试TIC12400笔记

工作中需要用到&#xff0c;但是有关这个芯片的参考资料好少&#xff0c;自己写一下调试过程&#xff0c;持续更新中&#xff0c;还没调完。 用的是正点原子的mini板&#xff0c;芯片是stm32f103RCT&#xff0c;需要知道spi的相关知识&#xff0c;先配置spi&#xff0c;用cube…

Ubuntu初期配置常见问题汇总

ubuntu配置vim 代码配色 终端配置 ubuntu配置vim 代码配色 终端配置_ubuntu的vim配置-CSDN博客https://blog.csdn.net/GM2418/article/details/134195020小缺点是无法自动补齐 ubuntu中vim实现代码补全等功能_ubuntu vim 自动补全-CSDN博客https://blog.csdn.net/weixin_4580…

图纸加密软件有哪些?2024好用不踩雷的10款图纸加密软件推荐!

在当今数字化时代&#xff0c;图纸作为工程设计、建筑规划等领域的重要文件&#xff0c;其安全性至关重要。为了保护这些敏感信息不被泄露&#xff0c;图纸加密软件应运而生。本文将为您推荐2024年10款好用且不踩雷的图纸加密软件&#xff0c;帮助您选择最适合的工具来保护您的…