一、點擊選擇圖片/拍照
// 點擊拍照/選擇圖片
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