微信小程序上传图片到七牛并加水印

微信小程序上传图片到七牛并通过canvas加水印
第一次写博客,请求大佬指点

const app = getApp()
const qiniuUploader = require("../../utils/qiniuUploader");

//七牛初始化 因为我比较菜没敢改动 这个是官方的demo 大佬如果看到我的代码可以帮忙指点一下 感谢
function initQiniu(token) {
  console.log(token, "我传过来了");
  var time = new Date();
  var options = {
    region: 'NCN',
    uptoken: token,
    key: "shop/hourse",
    domain: 'bzkdlkaf.bkt.clouddn.com',
    shouldUseQiniuFileName: true,
  }
  qiniuUploader.init(options);
}
Page({

  /**
   * 页面的初始数据
   */
  data: {
    imageObject: {},
    url: "",
    images: [],
    pathsTmp: [],
    canvasWidth: "",
    canvasHeight: "",
    template: {},
  // 上传图片主线
  imgUpData() {
    let that = this;
    async function canvas1() {
      let xx= await getToken(that);//获取token
      console.log(xx.data.data,"token");
      initQiniu(xx.data.data);
      let a = await hhh(); //选择图片
      let b = await getImgInfo(a); //获取图片信息
      // let c = await getImgInfo(a);//画图
      let c = canvas(that, b);
      let d = await Draw(c);
      let e = await lwqdraw(d);//从canvas 上获取图片信息并将图片信息传给七牛 
      qiniu(that, e.tempFilePath, xx.data.dataW)

    }
    canvas1();
  },44
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function() {
    console.log("你执行了吗")
    this.getHouseTemplate();
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function() {

  },

})

function hhh() {
  return new Promise((resolve, reject) => {
    wx.chooseImage({
      count: 1,
      success: function(res) {
        resolve(res.tempFilePaths[0]);
      }
    })
  })
}

function getImgInfo(imgpath) {
  return new Promise((resolve, reject) => {
    wx.getImageInfo({
      src: imgpath,
      success: function(res) {
        resolve(res);
      }
    })
  })
}

function getCanvasImg(firstCanvas) {
  return new Promise((resolve, reject) => {
    wx.canvasToTempFilePath({
      canvasId: firstCanvas,
      success: function(res) {
        resolve(res);
      }
    })
  })
}

function Draw(ctx) {
  return new Promise((resolve, reject) => {
    ctx.draw(false, resolve())
  })
}
//绘制
function canvas(that, b) {
  let ctx = wx.createCanvasContext('firstCanvas');
  let width = b.width,
    height = b.height
  that.setData({
    canvasHeight: b.height,
    canvasWidth: b.width
  })
  ctx.drawImage(b.path, 0, 0, width, height);
  ctx.rotate(45 * Math.PI / 180); //设置文字的旋转角度,角度为45°
  ctx.beginPath();
  ctx.setFontSize(30); //字号大小
  ctx.setFillStyle('red'); //颜色
  ctx.fillText('郑州鼎元科技', 200,  100); //内容
  ctx.strokeText('郑州鼎元科技',100,  100);
  return ctx
}
//获取token
function getToken(that){
   return new Promise((resolve,reject)=>{
     wx.request({
       url: "",
       data: "123",
       type: "get",
       success: function (res) {    
         resolve(res);
       }
     })
   })
 
}

function lwqdraw(d){
  return new Promise((resolve,reject)=>{
    setTimeout(async function () {
      let e = await getCanvasImg('firstCanvas', d);
      resolve(e)
    }, 2000)
  })
}
//七牛上传 没有进行改造
function qiniu(that, filePath,token){
  qiniuUploader.upload(filePath, (res) => {
    that.setData({
      'imageObject': res
    });
    console.log(res)
    console.log('file url is: ' + res.fileUrl)
  }, (error) => {
    console.error('error: ' + JSON.stringify(error));
  }, {
      region: 'NCN', // 华北区
      domain: 'bzkdlkaf.bkt.clouddn.com',
      shouldUseQiniuFileName: false,
      uptoken: token,
      key: 'hourse' + (new Date()).getTime() + '.jpg',

    },
    (progress) => {
      console.log('上传进度', progress.progress)
      console.log('已经上传的数据长度', progress.totalBytesSent)
      console.log('预期需要上传的数据总长度', progress.totalBytesExpectedToSend)
    }, cancelTask => that.setData({
      cancelTask
    })
  );
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值