這篇主要講到wx.getLocalImagData接口的使用時需要注意的點。
wx.getLocalImgData({
localId: '', // 圖片的localID
success: function (res) {
var localData = res.localData; // localData是圖片的base64數據,可以用img標簽顯示
}
});
該接口獲取到的是圖片的數據,這個數據有點坑。
文檔上說這個數據是圖片的base64碼,然而???
在開發過程中,在IOS上得到的數據是一個圖片的base64碼,而在安卓機上就氣死人了,剛開始並不知道,就一直在查找無法顯示的問題。最后是在https://blog.csdn.net/qq_22509715/article/details/78289464得到了解答。安卓機上得到的是沒有頭部的base64碼,且其中可能會包含換行符。這里的解決方案,可能會想到先判斷是否IOS機,然后如果是則直接保存和顯示數據,否則就給他加頭部和替代換行符。但是在判斷IOS機的瀏覽器時又遇到了問題,那就是微信IOS客戶端的瀏覽器有WKWebView和WKWebView兩種並且他們獲取的變量不一致。覺得這樣操作實在太麻煩了,於是換了一種思路來解決,那就時判斷獲取到的圖片數據是否有base64頭部,沒有我就給它加上,這樣子解決似乎更直接些。貼上最終代碼:
wx.getLocalImgData({
localId: localIds[i],
success: function (res) {
var localData = res.localData;
if (localData.indexOf('data:image') != 0) {
//判斷是否有這樣的頭部
localData = 'data:image/jpeg;base64,' + localData
}
localData = localData.replace(/\r|\n/g, '').replace('data:image/jgp', 'data:image/jpeg')
//第一個替換的是換行符,第二個替換的是圖片類型,因為在IOS機上測試時看到它的圖片類型時jgp,
//這不知道時什么格式的圖片,為了兼容其他設備就把它轉為jpeg
images.push(localData)//images是業務中用到的變量
showImage(localData)
}
});
https://blog.csdn.net/wangmj518/article/details/88096050
https://www.freesion.com/article/8875662919/