測試了多種方法,最后用了image-tools 組件轉成功,image-tools 網上有下載就不提供了,具體的使用方法是引入下載的image-tools。
import {
base64ToPath,//base64碼轉圖片
pathToBase64
} from '@/components/image-tools/index.js'
提供了2中方法,base64ToPath 是base64編碼字符串轉圖片文件;pathToBase64 是圖片文件轉base64編碼字符串;
uni.chooseImage({ count: 1, //默認9 sizeType: ['original', 'compressed'], //可以指定是原圖還是壓縮圖,默認二者都有。 sourceType: ['album', 'camera'], //從相冊選擇。 success(res) { console.log("res-----------------------------------------------", res); // res.tempFilePaths[0] 表示調用手機選擇的文件路徑 pathToBase64(res.tempFilePaths[0]) .then(base64 => { console.log(base64.length) let base64str= base64.substring(base64.indexOf(",")+1)
//base64str 表示去除頭部的base64字符串 let opts = { url: 'http://localhost/sys/fileex/webcard/shibie64jo', method: 'post' }; let param = { "strb64":base64str, "zjtype":"103", "imgtype":"jpg" }; _this.httpRequestex(opts, param).then(res => { console.log(res) if(res.data.success){ let dataJSONstr = JSON.parse(res.data.zjinfo) console.log(res.data.zjinfo) let resdata = dataJSONstr.data.cardsinfo.card.item let imgurl = res.data.url for (var i = 0; i < resdata.length; i++) { var value = resdata[i].content; var key = resdata[i].desc; console.log('key=' + key + ' value=' + value) if (key != '保留') { _this.reportData.push(resdata[i]) } } } }) }) .catch(error => { console.log('res'+error) console.error(error) }) // 都可以用 const arrayBuffer = new Uint8Array(res.tempFilePaths[0]); //先將本地圖片路徑轉換成array類型 const base64Img = uni.arrayBufferToBase64(arrayBuffer); //再轉換成base64類型 console.log(base64Img.length) //成品就在這里了 }, fail(err) { } });