Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >小程序上传图片加水印

小程序上传图片加水印

作者头像
全栈程序员站长
发布于 2022-07-04 01:58:32
发布于 2022-07-04 01:58:32
1.3K0
举报

大家好,又见面了,我是你们的朋友全栈君。

思路: 1.点击图片上传 2.加水印 3.传给后台 html

代码语言:javascript
AI代码解释
复制
<canvas class='canvas' canvas-id="firstCanvas"></canvas>

css

代码语言:javascript
AI代码解释
复制
.canvas{ 
   
  border: 2rpx solid pink;
  background: pink;
  width: 100%;
  height: 100%;
  //position:fixed;left:100%; 想隐藏画布单又想执行画布方法,用这个css;用display会不执行画布
}

js

代码语言:javascript
AI代码解释
复制
//点击方法上传
  chooseImg: function () { 
   
    var that = this;
    wx.showActionSheet({ 
   
      itemList: ['手机拍摄', '图片上传'],
      success: function (res) { 
   
        //if (res.tapIndex == 0) { 
   
          wx.chooseImage({ 
   
            count: 3, // 默认9
            sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
            sourceType: ['camera'], // 可以指定来源是相册还是相机,默认二者都有
            success: function (res) { 
   
              // 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片
              var tempFilePaths = res.tempFilePaths;//
              for (let item of tempFilePaths) { 
   
                //that.uploadimg(item);//这是直接上传原图
              }
              if (that.data.imgList.length != 0) { 
   
                that.setData({ 
   
                  imgList: that.data.imgList.concat(res.tempFilePaths)
                })
              } else { 
   
                that.setData({ 
   
                  imgList: res.tempFilePaths
                })
              }
              that.watermark();//调方法加水印
            }
          })
      },
    })
  },
  //加水印
	watermark:function() { 
   
    let that = this
    console.log(that.data.imgList,11111)//上传的图片
		//获取图片详细信息
		for (let item of that.data.imgList) { 
   
			wx.getImageInfo({ 
   
				src: item,
				success: (ress) => { 
   
					console.log("获取图片详情", item)
          let ctx = wx.createCanvasContext('firstCanvas')
					that.setData({ 
   
						canvasHeight: ress.height,
						canvasWidth: ress.width
          })
					//将图片src放到cancas内,宽高为图片大小
					ctx.drawImage(item, 0, 0, 56, 56)
					//将声明的时间放入canvas
					ctx.setFontSize(17) //注意:设置文字大小必须放在填充文字之前,否则不生效
					ctx.setFillStyle('grey')
					ctx.fillText("水印", 0, 30)
          			ctx.strokeText("水印", 0, 30)
					ctx.draw(false, function () { 
   
					wx.canvasToTempFilePath({ 
   
						canvasId: 'firstCanvas',
						success: (res) => { 
   
                			that.uploadimg(res.tempFilePath);//上传图片,加了水印的图片
							},
							fail: (e) => { 
   
								console.log(e)
							}
						})
					})
				}
			})
		}
  },
  //上传图片
	 uploadimg(localUrl) { 
   
    let that = this;
    wx.showLoading({ 
   
      title: "正在上传图片",
      mask: true
    })
    var tempFilePaths = [];
    tempFilePaths.push(localUrl)
    //这是公司封装的上传方法,就是ajax上传而已
    ygPost.uploadFile(tempFilePaths, function (res) { 
   
      wx.hideLoading();
      if (res) { 
   
        wx.showToast({ 
   
          title: '图片上传成功',
          icon: 'success',
          duration: 1000
        })
        let arr = []
        arr.push(res)
        that.setData({ 
   
          uploadList: that.data.uploadList.concat(arr)//加了水印的图片合集
        })
        console.log(that.data.uploadList, 1111)
        wx.hideLoading();
      }
    })
  },
  //测试end

注意事项: 1.如果在画图完成后,有对应操作时,必须在draw的callback后执行,比如图片预览、改变画布大小等 ctx.draw(false, function() { console.log(‘后续操作’);

}) 2.draw完成后的图片预览 wx.canvasToTempFilePath({ x: 0, y: 0, width: width, height: height, canvasId: canvasId, fileType: ‘png’, success: function(res) { wx.previewImage({ urls: [res.tempFilePath], }) } }, ctx)

代码语言:javascript
AI代码解释
复制
大概思路

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/148950.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
微信小程序上传图片
//添加图片 joinPicture: function (e) { var index = e.currentTarget.dataset.index; var evalList = this.data.evalList; var that = this; var imgNumber = evalList[index].tempFilePaths; if (imgNumber.length >= 3) { wx.showModal({
达达前端
2022/04/29
2K0
[猫头虎分享21天微信小程序基础入门教程] 第20天:小程序的多媒体功能与图像处理
大家好,我是猫头虎,一名全栈软件工程师。今天我们继续微信小程序的学习,重点了解小程序的多媒体功能与图像处理。这些功能可以帮助你在小程序中实现丰富的多媒体交互,提高用户体验。🚀
猫头虎
2024/05/31
2070
小程序的页面生成图片分享朋友圈
1.网络图片要下载到本地,就是getimginfo和promise,具体技术细节我也不晓得。然后就是本地图片的地址和网络图片的地址不同。本地的要加../../images/+res[0].path,而网络的直接是res[0].path。本机调试看不出来,用真机调试比较容易发现问题。
hotqin888
2018/10/15
4.6K0
小程序10行代码实现微信头像挂红旗,国庆节个性化微信头像
至于如何创建小程序,我这里就不在细讲了,我也有写过创建小程序的文章,也有路过相关的学习视频,去翻下我历史文章找找就行。
编程小石头
2019/09/26
3.5K6
小程序10行代码实现微信头像挂红旗,国庆节个性化微信头像
微信小程序实现上传图片功能[通俗易懂]
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/150595.html原文链接:https://javaforall.cn
全栈程序员站长
2022/06/28
5.4K0
微信小程序实现上传图片功能[通俗易懂]
小程序 — canvas图片合成
前言:这章我们为图片添加一些小物件,然后用canvas合成并导出到本地。 GitHub:https://github.com/Ewall1106/miniProgramDemo 我们先看看图片合成
Ewall
2018/09/30
7.4K1
小程序 — canvas图片合成
小程序海报,极简的实现方式
需要注意的是,目前的canvas可以简单分为两种。一种是传统网页中的canvas,一种是小程序中的canvas。两者的功能是完全一样的。只是标签的样式,和 api 略有区别而已。目前我们主要讲解小程序中的canvas。
万少
2025/02/11
4020
小程序海报,极简的实现方式
小程序上传wx.uploadFile - 小程序请假-请求
UploadTask wx.uploadFile(Object object) 将本地资源上传到服务器。客户端发起一个 HTTPS POST 请求,其中 content-type 为 multipart/form-data。使用前请注意阅读相关说明。
达达前端
2022/04/29
1.7K0
小程序上传wx.uploadFile - 小程序请假-请求
小程序canvas生成海报图片压缩和失真问题解决
我这里绘制二维码使用的 wxapp-qrcode ,也可以使用weapp-qrcode,基本是一样的,今天主要讲解适配不同屏幕尺寸的canvas。
PHP开发工程师
2022/04/14
2.3K0
看微信小程序 wx.canvasToTempFilePath 方法之巨坑的解决之道
当然这个项目是可以用的,但是生成不了图片,打开 tempFilePath直接报错,发现了什么原因了吗?
全科
2018/08/15
4.7K0
小程序给图片添加水印(时间,经纬度信息)
在移动互联网时代,小程序因其轻量、便捷的特性,逐渐成为用户日常生活中不可或缺的工具。无论是社交、购物,还是记录生活,小程序都提供了丰富的功能。然而,随着用户对数据安全和信息追溯需求的增加,如何在图片中添加关键信息(如时间、经纬度等)成为开发者需要解决的问题之一。尤其是在一些特定场景下,如户外打卡、旅行记录、证据留存等,为图片添加时间戳和地理位置信息不仅能增强数据的可信度,还能为用户提供更丰富的上下文信息。
fastmock
2025/07/22
4340
小程序 canvas 生成海报 一次搞掂
需要注意的是,目前的canvas可以简单分为两种。一种是传统网页中的canvas,一种是小程序中的canvas。两者的功能是完全一样的。只是标签的样式,和 api 略有区别而已。目前我们主要讲解小程序中的canvas。
万少
2025/02/11
4970
小程序 canvas 生成海报 一次搞掂
小程序如何生成海报分享朋友圈
项目需求写完有一段时间了,但是还是想回过来总结一下,一是对项目的回顾优化等,二是对坑的地方做个记录,避免以后遇到类似的问题。
super.x
2019/07/02
1.6K0
利用云开发优化博客小程序(三)——生成海报功能
周末花了点时间把小程序版博客中的生成海报的功能给完成了,对于新手的我来说遇到的问题还是挺多的,这里简单记录下坑。
Bug生活2048
2018/10/18
1.1K0
利用云开发优化博客小程序(三)——生成海报功能
小程序生成图片并保存
自己做过几个小程序生成图片并保存的功能,觉得做这个功能用到的还挺多的,记录一下。 总体可以分为: 前端处理:后端返回数据,前端自己将图片、文字等画到 canvas 上,然后转图片。 后端处理:后端直接返回图片,前端只做保存功能。 #前端处理 #绘制 Canvas 并保存 小程序有强大的 canvas 可以转成图片并保存,具体API看 文档 。 但是 canvas 的原生操作过于啰嗦,比如画一个字上去: const ctx = wx.createCanvasContext('myCanvas') ctx.s
九旬
2020/10/23
3.2K0
微信小程序的图片色彩分析,窃取主色调,调色板
打不着的大喇叭
2024/03/11
4800
微信小程序的图片色彩分析,窃取主色调,调色板
【微信小程序】基于百度大脑人体检测、人脸识别以及调用阿里垃圾分类识别小程序利用canvas完成人脸画图、分割手部部分图片算法
说明:人体出现在镜头里用红色框将人脸圈出来、用黄色框将手部圈出来,定时器触发后,通过百度返回的top+、left+、width+、height+将拍照的截图用canvas画出来,最后保存上传到阿里云垃圾分类识别检测
德宏大魔王
2023/08/08
6460
【微信小程序】基于百度大脑人体检测、人脸识别以及调用阿里垃圾分类识别小程序利用canvas完成人脸画图、分割手部部分图片算法
微信小程序的图片色彩分析,解决画布网络图片报错问题,窃取网络图片的主色调
打不着的大喇叭
2024/03/11
2490
微信小程序的图片色彩分析,解决画布网络图片报错问题,窃取网络图片的主色调
微信小程序上传图片和文件
要有遥不可及的梦想,也要有脚踏实地的本事。———– Grapefruit.Banuit Gang(香柚帮)
全栈程序员站长
2022/09/07
2.7K0
「小程序JAVA实战」小程序上传短视频(46)
个人信息:用户上传短视频。源码:https://github.com/limingios/wxProgram.git 中wx-springboot 和 No.15 业务流程 用户选择视频(10秒限制),也可以通过摄像头拍摄 打开选择背景音乐。 可以选择音乐或者不选择输入视频的描述。 controller 上传视频 保存视频的截图 用户是否选择背景音乐 7.1 是:直接保存视频 7.2 否:合并视频和背景音乐,保存视频 微信插件 官方介绍:https://developers.weixin.qq.com/mi
IT架构圈
2019/07/08
2.6K0
「小程序JAVA实战」小程序上传短视频(46)
推荐阅读
相关推荐
微信小程序上传图片
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档