1. 程式人生 > >微信小程式 點選生成朋友圈分享圖

微信小程式 點選生成朋友圈分享圖

//share.js
Page({
  data: {
    imagePath: "/images/shareimg_bg.jpg",
    imageTx: "http://img0.imgtn.bdimg.com/it/u=1079555585,1801783759&fm=27&gp=0.jpg",
    imageEwm: "/images/ewm.jpg",
    maskHidden: true,
  },
  onLoad: function (options) {
    // 頁面初始化 options為頁面跳轉所帶來的引數
    var size = this.setCanvasSize();//動態設定畫布大小
    // this.createNewImg();
    //建立初始化圖片
  },
  //適配不同螢幕大小的canvas    生成的分享圖寬高分別是 750  和940,老實講不知道這塊到底需不需要,然而。。還是放了,因為不寫這塊的話,模擬器上的圖片大小是不對的。。。
  setCanvasSize: function () {
    var size = {};
    try {
      var res = wx.getSystemInfoSync();
      var scale = 750;//畫布寬度
      var scaleH = 940 / 750;//生成圖片的寬高比例
      var width = res.windowWidth;//畫布寬度
      var height = res.windowWidth * scaleH;//畫布的高度
      size.w = width;
      size.h = height;
    } catch (e) {
      // Do something when catch error
      console.log("獲取裝置資訊失敗" + e);
    }
    return size;
  },
  //將1繪製到canvas的固定
  settextFir: function (context) {
    let that=this;
    var size = that.setCanvasSize();
    var textFir = "發了一個紅包";
    console.log(textFir);
    context.setFontSize(24);
    context.setTextAlign("center");
    context.setFillStyle("#fee6b5");
    context.fillText(textFir, size.w / 2, size.h * 0.25);
    context.stroke();
  },
  //將2繪製到canvas的固定
  settextSec: function (context) {
    let that = this;
    var size = that.setCanvasSize();
    var textSec = "長按識別小程式,領獎金";
    context.setFontSize(14);
    context.setTextAlign("center");
    context.setFillStyle("#fee6b5");
    context.fillText(textSec, size.w / 2, size.h * 0.88);
    context.stroke();
  },
  //將canvas轉換為圖片儲存到本地,然後將圖片路徑傳給image圖片的src
  createNewImg: function () {
    var that = this;
    var size = that.setCanvasSize();
    var context = wx.createCanvasContext('myCanvas');
    var path = "/images/shareimg_bg.jpg";
    var imageTx = that.data.imageTx;
    var imageEwm = that.data.imageEwm;
    var imageZw = "/images/xcxewm.png";
    context.drawImage(path, 0, 0, size.w, size.h);
    context.drawImage(imageTx, size.w / 2 - 25, size.h * 0.02, size.w * 0.14, size.w * 0.14);
    context.drawImage(imageEwm, size.w / 2 - 60, size.h * 0.32, size.w * 0.33, size.w * 0.33);
    context.drawImage(imageZw, size.w / 2 - 25, size.h * 0.7, size.w * 0.14, size.w * 0.14);
    this.settextFir(context);
    this.settextSec(context);
    console.log(size.w, size.h)
    //繪製圖片
    context.draw();
    //將生成好的圖片儲存到本地,需要延遲一會,繪製期間耗時
    wx.showToast({
      title: '生成中...',
      icon: 'loading',
      duration: 2000
    });
    setTimeout(function () {
      wx.canvasToTempFilePath({
        canvasId: 'myCanvas',
        success: function (res) {
          var tempFilePath = res.tempFilePath;
          console.log(tempFilePath);
          that.setData({
            imagePath: tempFilePath,
            canvasHidden: false,
            maskHidden: true,
          });
        //將生成的圖片放入到《image》標籤裡
          var img = that.data.imagePath;
          wx.previewImage({
            current: img, // 當前顯示圖片的http連結
            urls: [img] // 需要預覽的圖片http連結列表
          })
        },
        fail: function (res) {
          console.log(res);
        }
      });
    }, 2000);
  },


})