h5中 wx.getLocalImgData接口的問題


這篇主要講到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/


免責聲明!

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



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