小程序之生成朋友圈圖片


 

 

       微信的小程序是沒有分享到朋友圈的功能的。小程序目前只能分享到群里或者發給好友。但是業務需要方便推廣,需要分享到朋友圈。

  經過度娘后,得出了以下思路:利用小程序canvas繪制圖片,將背景圖和二維碼繪制成一張圖片。百度過幾個好的demo,參考了一下,本以為會很簡單就解決這個問題,然而這個並不是小程序canvas的難點!

 

  WXML

  <view class='canvas-box'>
    <canvas style="width:750rpx; height:940rpx;" canvas-id="myCanvas"/>
    <image src='{{imagePath}}'></image>  
  </view>
<button class='inviteBtn' bindtap='createSharePic'>生成朋友圈分享圖</button>、
這是觸發canvas的按鈕

 

  繪制長按識別二維碼

  settext: function (context) {
    let _this = this;
    var size  = _this.setCanvasSize();
    var text  = "長按識別小程序";
    context.setFontSize(12);
    context.setTextAlign("center");
    context.setFillStyle("#000");
    context.fillText(text, size.w / 2, size.h * 0.90);
    context.stroke();
  },

    繪制圖片

createNewImg: function () {
    var _this       = this;
    var size        = _this.setCanvasSize();
    var context     = wx.createCanvasContext('myCanvas');
    var path        = "/assets/images/qrshare1.jpg";  //測試的圖片
    var imageQrCode = _this.data.filePath;       //二維碼
    context.drawImage(path, 0, 0, size.w, size.h);
    context.drawImage(imageQrCode, size.w / 2 - 55, size.h * 0.55, size.w * 0.33, size.w * 0.33);
    this.settext(context);
    //繪制圖片
    context.draw();
    //將生成好的圖片保存到本地,需要延遲一會,繪制期間耗時
    wx.showToast({
      title   : '生成中...',
      icon    : 'loading',
      duration: 2000
    });
    setTimeout(function () {
      wx.canvasToTempFilePath({
        canvasId: 'myCanvas',
        success : function (res) {
          var tempFilePath = res.tempFilePath;
          _this.setData({
            imagePath   : tempFilePath,
          });
     
          var img  = _this.data.imagePath;
          let urls = []
          urls.push(img, '二維碼路徑')   //二維碼路徑是為了用戶也可以保存二維碼,分享到朋友圈有合成的圖片也有二維碼(參考拉鈎小程序分享)
          wx.previewImage({
            current: img,  // 當前顯示圖片的http鏈接
            urls   : urls  // 需要預覽的圖片http鏈接列表
          })
        },
        fail: function (res) {
          console.log(res);
        }
      });
    }, 2000);
  },

本來我是直接繪制網絡圖片的,但是在真機上,網絡圖片不顯示!於是百度了一下,可以先下載,接口返回的圖片再繪制

//生成朋友圈圖片
  createSharePic() {
    let _this = this,
        qrcode= _this.data.qrcode
    wx.downloadFile({
      url    : qrcode,
      success: function (res) {
        if (res.statusCode === 200) {
          _this.setData({
            filePath: res.tempFilePath,
          })
          _this.createNewImg();
        }
      }
    })
    
  }

問題出來了,本地上測試沒問題,遠程調試也沒問題,可以生成圖片保存到手機

 

 

 

納悶了一會之后,我發現自己沒有后台添加download的下載域名。因為平時在本地的都是勾選了不檢查域名。所以在這納悶了很久!!!!!!!

 

總結:

  小程序canvas不好控制,寫樣式時用rpx,canvas用px;

  網絡圖片不顯示(我用網絡圖片時,是不顯示,不確定這個問題是我的操作問題還是小程序的限制,希望大佬們可以給我個肯定的結論)

  要在微信后台設置downloand下載域名(我這里用了下載后繪制的方法,如果大家有不用下載的方法,望告知!謝謝)

 

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM