小程序上传图片加水印

小程序上传图片加水印思路:1.点击图片上传2.加水印3.传给后台html<canvasclass=’canvas’canvas-id=”firstCanvas”></canvas>css.canvas{border:2rpxsolidpink;background:pink;width:100%;height:100%;//position:fixed;left:100%;想隐藏画布单又想执行画布方法,用这个css;用display会不执行

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

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

<canvas class='canvas' canvas-id="firstCanvas"></canvas>

css

.canvas{ 
   
  border: 2rpx solid pink;
  background: pink;
  width: 100%;
  height: 100%;
  //position:fixed;left:100%; 想隐藏画布单又想执行画布方法,用这个css;用display会不执行画布
}

js

//点击方法上传
  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)

大概思路
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pvzβ版下载_掌上生活app下载安装

    pvzβ版下载_掌上生活app下载安装环境要求HttpRunner是一个基于Python开发的测试框架,可以运行在macOS、Linux、Windows系统平台上。这里使用macOS系统进行演示对于python版本要求:py

    2022年7月30日
    5
  • socat 使用「建议收藏」

    转原文链接:http://www.wenquan.name/?p=1158用socat试几个netcat常用的用法,对比如下:1.听tcp12345端口#nc-l127.0.0.112345#socattcp-listen:12345-2.向远处tcp12345端口发点字#echo“test”|nc127.0.0.112345#echo“t…

    2022年4月8日
    53
  • 微软正版 Office2007 专业版+企业版光盘ISO镜像

    微软正版 Office2007 专业版+企业版光盘ISO镜像微软正版Office2007专业版+企业版光盘ISO镜像;微软office2007为微软最新的office系列软件,不仅在功能上进行了优化,而且安全性稳定性更得到了巩固.现在终于有了简体中文版的office2007软件来供下载了.PR专业版MSDN版Office2007光盘ISO镜像下载,2006年11月13日放出,市面上唯一的、真正的、纯正的、MSDN原版Offi…

    2022年7月19日
    17
  • WSL安装及升级WSL2

    WSL安装及升级WSL2Windows是目前市场占有率最高的桌面操作系统了,无论是软件丰富度和UI都算不错了,但是终端实在是鸡肋,CDM的UI丑的一批,而且功能好渣。整的我好几次都为了终端移步Linux。虽然说有Gitbash可以运行一些Linux命令,但是还是不中用啊就????????????幸好我们有了WSL(WindowsSubsystemforLinux),顾名思义就是Windows中可以用Linux了,当然命令也会…

    2022年6月22日
    189
  • IDEA 热部署设置(JRebel插件激活)「建议收藏」

    IDEA 热部署设置(JRebel插件激活)「建议收藏」1.打开File&gt;&gt;setting,选择Plugins&gt;&gt;BrowseRepositories2.搜索Jrebel找到JRebelforIntelliJ,选择install安装                            3. 打开File-&gt;setting,选择JRebel&gt;&gt;…

    2022年6月11日
    154
  • SVR回归_时间序列分析优缺点

    SVR回归_时间序列分析优缺点文章目录1.SVR时间序列预测2.SVR调参3.SVR高斯核与过拟合1.SVR时间序列预测SVR可用于时间序列分析,但不是较好的选择。现在一般采用LSTM神经网络来处理时间序列数据#SVR预测#也可用于时间序列分析(ARIMA也可用于时间序列分析)importnumpyasnpfromsklearnimportsvmimportmatplotlib.pyplotaspltif__name__==”__main__”:#构造数据N=50

    2025年7月29日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号