美文网首页
小程序用Canvas点击保存自定义二维码

小程序用Canvas点击保存自定义二维码

作者: 1石头 | 来源:发表于2019-08-26 09:52 被阅读0次

    html:部分

    <canvas canvas-id="myCanvas" style="width:320px;height:400px;margin:30rpx auto;"/>

          <view @tap='saveImg' style='width:150rpx;height:50rpx;background:#000;color:#fff;

          text-align:center;line-height:50rpx;border-radius:10rpx;

          font-size:24rpx;margin:0 auto'>保存</view>

    js: 部分

    (备注:项目是用mpvue,uni-app,vue 语法可以直接使用:小程序开发开发框架。小程序原生用的话,自己转一下this 指向赋值就可以了)

    data(){
     return{

          img: "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1566540117318&di=016c1af6ebfe2182af0337e312770091&imgtype=0&src=http%3A%2F%2Fd-pic-image.yesky.com%2F1080x-%2FuploadImages%2F2019%2F044%2F59%2F1113V6L3Q6TY.jpg"

        }

      },

    onShow(){ 
       let that=this;

        //先下载下来,比如我们的logo(没有下载 真机无效图片)

        wx.downloadFile({

          url: that.img,

          success:function(res){

              console.log(res);

              that.img= res.tempFilePath

              that.canvasImg();

          }

        })

      },

    //画出画布 
    canvasImg(){

          const ctx = wx.createCanvasContext('myCanvas');

          // const grd = ctx.createLinearGradient(0, 0, 320, 0);//创建了一个线性的渐变颜色 前两个参数起点横纵坐标,后两个参数终点横纵坐标

          // grd.addColorStop(0, '#EFDCB2');

          // grd.addColorStop(1, '#EFDCB2');

          // ctx.setFillStyle(grd);  //为创建的canvans上下文添充颜色  如果没有设置 fillStyle,默认颜色为 black。

          ctx.fillStyle='#EFDCB2';//背景色

          ctx.fillRect(0, 0, 320, 400);

          ctx.fillStyle="#ffffff";

          ctx.fillRect(50,60,220,220); //白色填充色的背景

          ctx.fillStyle="#ffffff";

          ctx.fillRect(0,340,320,60); //填充色的背景

          ctx.drawImage(this.img, 70, 80, 180, 180);  //里面的参数无非就是图片放置的位置即图片的横纵坐标,图片的宽高

          ctx.setFillStyle("#000000");

          ctx.setFontSize(20);                              //字大小

          ctx.setTextAlign('center');                        //是否居中显示,参考点画布中线

          ctx.fillText('店铺二维码', 160, 320);            //150:canvas画布宽320,取1/2,中间,280:纵向位置

          ctx.drawImage(this.img, 50, 350, 40, 40); //logo

          ctx.setFillStyle("#333333");

          ctx.setFontSize(22);                              //字大小

          ctx.setTextAlign('center');                        //是否居中显示,参考点画布中线

          ctx.fillText('中琛源溯源营销', 180, 380);            //150:canvas画布宽320,取1/2,中间,280:纵向位置

          //最外面的边框

          ctx.setStrokeStyle('#EFDCB2');

          ctx.strokeRect(0, 0, 320, 400);

          ctx.draw();    //画,生成                                 

        },

    //导出画布    
    saveImg() {

          setTimeout(()=>{

              wx.canvasToTempFilePath({ //保存画布

                  x:0,

                  y:0,

                  width: 320,                    //画布宽高

                  height: 400,

                  destWidth: 600,                //画布宽高*dpr 以iphone6为准

                  destHeight: 800,

                  canvasId: 'myCanvas',

                  success: function (res) {

                    console.log(res.tempFilePath) //生成的临时图片路径

                    wx.saveImageToPhotosAlbum({

                      filePath: res.tempFilePath,

                      success: function (res) {

                        wx.showToast({

                          title: '保存成功',

                        })

                      }

                    })

                  }

                })

          },100)

    }

    有问题可以提出T~T

    相关文章

      网友评论

          本文标题:小程序用Canvas点击保存自定义二维码

          本文链接:https://www.haomeiwen.com/subject/gmzlectx.html