微信小程序之拍照/選擇圖片&&轉成base64、顯示在頁面上&&預覽圖片


一、點擊選擇圖片/拍照

// 點擊拍照/選擇圖片
  choosePic() {
    let that = this;
    wx.chooseImage({
      count: 1,
      sizeType: ['original', 'compressed'],
      sourceType: ['album', 'camera'],
      success(res) {
        // 將圖片處理成base64
        that.transformBase(res);
      },
      fail: function(res) {
        console.log(res.errMsg)
      }
    })
  },

二、將圖片處理成base64

 transformBase(res) {
    let that = this;
    var FSM = wx.getFileSystemManager();
    //循環將得到的圖片轉換為Base64
    for (let r in res.tempFilePaths) {
      // console.log(res.tempFilePaths[r])
      FSM.readFile({
        filePath: res.tempFilePaths[r],
        encoding: "base64",
        success: function(data) {
          let Working = data.data;
          that.getBase64ImageUrl(Working)
        }
      });
    }
  },

三、把base64轉成圖片路徑顯示在頁面

 getBase64ImageUrl: function(res) {
    /// 獲取到base64Data
    var base64Data = res;
    /// 通過微信小程序自帶方法將base64轉為二進制去除特殊符號,再轉回base64
    base64Data = wx.arrayBufferToBase64(wx.base64ToArrayBuffer(base64Data));
    /// 拼接請求頭,data格式可以為image/png或者image/jpeg等,看需求
    let base64ImgUrl = this.data.base64ImgUrl;
    let WorkingCard = this.data.WorkingCard;    //需要賦值的圖片base64字段
    let base64Url = "data:image/png;base64," + base64Data;
    base64ImgUrl.push(base64Url);   //用來顯示在頁面上的base64路徑(數組)
    WorkingCard = base64Url;
    // 獲取文件(圖片)MD5
    let dealToMD5 = sMD5.hexMD5(base64Url);   //(var sMD5 = require('../../utils/common/spark-md5.js'))
    /// 刷新數據
    // console.log(base64ImgUrl, '===========')
    this.setData({
      isGetPicture: true,
      base64ImgUrl: base64ImgUrl,
      WorkingCard: WorkingCard,
      WorkingCardMD5: dealToMD5
    })
  },

四、點擊預覽圖片

 previewImage: function(e) {
    var that = this,
      //獲取當前圖片的下表
      index = e.currentTarget.dataset.index,
      //數據源
      pictures = this.data.base64ImgUrl;
    wx.previewImage({
      //當前顯示下表
      current: pictures[index],
      //數據源
      urls: pictures
    })
  },

html部分

<cus-itemLine type="normal registerCard">
     <view class="lineLeft">工作證</view>
     <view class="lineCard">
     <view class="delete" bindtap="deleteShopPhoto" wx:if="{{isGetPicture}}">
         <view class="deleteBtn">
           <image class="deleteIcon" src="../../images/deletePic.png"></image>
         </view>
       </view>
       <image class="Icon" src="{{isGetPicture?base64ImgUrl[0]:'../../images/workPic.png'}}" bindtap="{{isGetPicture?'previewImage':'choosePic'}}" data-index="{{base64ImgUrl[0]}}"></image>
     </view>
</cus-itemLine>

參考:https://blog.csdn.net/qq_38244984/article/details/82221151
https://blog.csdn.net/weixin_34128411/article/details/88120030
https://blog.csdn.net/gao_xu_520/article/details/72724008


免責聲明!

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



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