91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

微信小程序如何繪制圖片發送朋友圈

發布時間:2021-05-19 11:14:08 來源:億速云 閱讀:236 作者:小新 欄目:web開發

這篇文章給大家分享的是有關微信小程序如何繪制圖片發送朋友圈的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

這種生成圖片的效果是很常見的,實現起來也不難,跟原生js的差不多。需要注意的就是canvas標簽上不要加太多的css,后果呢就是導致canvas不顯示,還有呢就是canvas組件的優先級是最高的,所以會覆蓋掉下面的所有內容,解決方法呢就是使用:

微信小程序如何繪制圖片發送朋友圈

使用上面這兩個組件是可以蓋在canvas上面的。

注意:canvas繪制不支持網絡圖片,需要將網絡圖片保存成本地圖片

 onLoad: function(options) {
    var grade = options.grade;
    this.setData({
      grade: grade
    })
    this.loading();
 
  },
  //檢測,網絡圖片是否下載完成
  loading: function() {
    var _this = this;
    wx.showLoading({
      title: '生成中...',
    })
    timer = setInterval(function() {
      var avatarUrl = _this.data.avatarUrl;
      var qc_code = _this.data.qc_code;
      if (avatarUrl != null && qc_code != null) {
        wx.hideLoading();
        clearInterval(timer);
        _this.draw();
      }
    }, 500)
  },
  //保存到相冊
  saveImage: function() {
    var imagePath = this.data.imagePath;
    wx.saveImageToPhotosAlbum({
      filePath: imagePath,
      success: function(res) {
        console.log(res)
      },
      fail: function(res) {
        console.log(res)
      }
    })
 
  },
  //將用戶頭像下載為本地路徑
  downImage: function(img) {
    var _this = this;
    wx.getImageInfo({
      src: img,
      success: function(res) {
        console.log(res.path)
        _this.setData({
          avatarUrl: res.path
        })
 
      }
    })
  },
  //下載小程序二維碼
  downImage2: function (img) {
    var _this = this;
    wx.getImageInfo({
      src: img,
      success: function (res) {
        console.log(res.path)
        _this.setData({
          qc_code: res.path
        })
 
      }
    })
  },
  //生成canvas圖片
  draw: function() {
    var _this = this;
    var context = wx.createCanvasContext('firstCanvas');
    var userInfo = wx.getStorageSync('userInfo');
    var award ;
    // 性別
    var gender = userInfo.gender;
    //背景圖片
    var bg = '../../images/icon-cj.png';
    //得分
    var grade = 0 ^ _this.data.grade;
    var width;
    var height;
    if (grade >= 0 && grade <= 30) {
      if(gender == 2){
        award = '../../images/zbzxlp.png';
      }else{
        award = '../../images/zbzxlg.png';
      }
    }else if(grade >= 31 && grade <= 60){
      if (gender == 2) {
        award = '../../images/zklp.png';
      } else {
        award = '../../images/zklg.png';
      }
    } else if (grade >= 61 && grade <= 80){
      if (gender == 2) {
        award = '../../images/zmlp.png';
      } else {
        award = '../../images/whlg.png';
      }
    }else{
      if (gender == 2) {
        award = '../../images/wmlp.png';
      } else {
        award = '../../images/wmlg.png';
      }
    }  
    if (award == '../../images/zbzxlp.png' || award == '../../images/zbzxlg.png'){
      width = 156;
      height= 25;
    }else{
      width = 103;
      height = 25;
    }  
    //二維碼
    var qc_code = _this.data.qc_code;
    // 用戶頭像
    var avatarUrl = _this.data.avatarUrl;
    //獲取設備的基本信息
    wx.getSystemInfo({
      success: function(res) {
        //繪制背景圖
        context.drawImage(bg, 0, 0, 350, 468);
        // 繪制獎項
        context.drawImage(award,180 - (width / 2),212 - (height / 2),width,height);
        //繪制二維碼
        context.drawImage(qc_code, 175 - (92 / 2), 385 - (108 / 2), 92, 107);
        //繪制得分
        context.setFontSize(28); //字體大小
        context.fillStyle = '#4fc089';
        context.setTextAlign('center')
        context.fillText(grade, 177, 48)
        // 繪制姓名
        context.setFontSize(16);
        context.fillStyle = '#000000';
        context.setTextAlign('center')
        context.fillText(userInfo.nickName, 167, 180);
        // 繪制頭像
        context.drawImage(avatarUrl, 72, 157, 33, 33);
 
        context.draw(false, function() {
          setTimeout(function() {
            wx.canvasToTempFilePath({
              width: 350,
              height: 468,
              destWidth: 700,
              destHeight: 936,
              canvasId: 'firstCanvas',
              success: function(res) {
                var tempFilePath = res.tempFilePath;
                console.log("圖片"+tempFilePath);
                _this.setData({
                  imagePath: tempFilePath,
                  isCanvas: true
                });
                _this.upload(tempFilePath);
 
              },
              fail: function(res) {
                console.log(res);
              }
            });
          }, 1000);
        });
      },
    })
  },

因為我的項目需要,我上面做個很多判斷,那些東西不需要管,重點就是,繪制圖片drawimage方法 和繪制文字的方法,我的繪制方法是讓他們根據canvas上的一個坐標點居中繪制的,這個可以看一下。

還有就是,生成圖片的尺寸要比畫的尺寸大一倍,這樣圖片不會失真,比較清楚,也就是這個方法:

wx.canvasToTempFilePath() 前兩個參數是canvas的大小,然后是生成圖片的大小,canvas的ID

感謝各位的閱讀!關于“微信小程序如何繪制圖片發送朋友圈”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

正安县| 微山县| 江阴市| 封开县| 武城县| 蕲春县| 潍坊市| 壶关县| 丰宁| 江口县| 平舆县| 山阴县| 高州市| 永吉县| 醴陵市| 彰化县| 鞍山市| 射阳县| 海南省| 林芝县| 外汇| 邳州市| 浮梁县| 会昌县| 中宁县| 葵青区| 且末县| 额敏县| 凌云县| 泸溪县| 青田县| 稷山县| 牟定县| 海阳市| 容城县| 乐山市| 池州市| 时尚| 奉贤区| 呼图壁县| 临沭县|