摘要:小程序?qū)崿F(xiàn)頁(yè)面轉(zhuǎn)化圖片并保存到相冊(cè)場(chǎng)景小程序測(cè)試活動(dòng),實(shí)現(xiàn)雷達(dá)圖展示不同的結(jié)果微信頭像二維碼測(cè)試結(jié)果文字,最終繪制出一張圖片用戶(hù)保存相冊(cè)。圓形頭像建議切鏤空?qǐng)D覆蓋,,有很難實(shí)現(xiàn)效果建議查看微信小程序社區(qū)的帖子。
小程序echarts+canvasdrawer實(shí)現(xiàn)頁(yè)面轉(zhuǎn)化圖片并保存到相冊(cè)
場(chǎng)景:小程序測(cè)試活動(dòng),實(shí)現(xiàn)echarts雷達(dá)圖展示不同的結(jié)果、微信頭像、二維碼、測(cè)試結(jié)果文字,最終繪制出一張圖片用戶(hù)保存相冊(cè)??紤]到開(kāi)發(fā)時(shí)間及各種坑使用了canvasdrawer組件,其中開(kāi)發(fā)過(guò)程中遇到的一些問(wèn)題總結(jié)。1.安卓部分機(jī)型圖片輸出不執(zhí)行
安卓輸出圖片錯(cuò)位問(wèn)題同樣異步解決
measureText注意線(xiàn)上版本庫(kù)1.9.1+
//業(yè)務(wù)層代碼 let that = this // 保存圖片到臨時(shí)的本地文件 //注意chart初始化實(shí)例不能輸出圖片 const ecComponent = this.selectComponent("#mychart-dom-graph");//獲取echarts組件 ecComponent.canvasToTempFilePath({ //安卓機(jī)型此處不會(huì)成功回調(diào) success: res => { that.eventDraw(res.tempFilePath) }, fail: res => console.log("失敗", res) }); //ec-canvas.js源碼 canvasToTempFilePath(opt) { if (!opt.canvasId) { opt.canvasId = this.data.canvasId; } const system = wx.getSystemInfoSync().system ctx.draw(true, () => {//此處微信api在安卓部分機(jī)型不會(huì)回調(diào) ,相反ctx.draw(false)清空畫(huà)布會(huì)執(zhí)行,導(dǎo)致echarts已經(jīng)繪制畫(huà)布清空,輸出為空?qǐng)D片 wx.canvasToTempFilePath(opt, this); }); } //修改后 canvasToTempFilePath(opt) { if (!opt.canvasId) { opt.canvasId = this.data.canvasId; } const system = wx.getSystemInfoSync().system if (/ios/i.test(system)) { ctx.draw(true, () => { wx.canvasToTempFilePath(opt, this); }); } else {//針對(duì)安卓機(jī)型異步獲取已繪制圖層 ctx.draw(true,()=>{ //斷點(diǎn)打印依舊不會(huì)執(zhí)行setTimeout(() => {wx.canvasToTempFilePath(opt, this);}, 1000);}}); ctx.draw(true); setTimeout(() => {//延遲獲取 wx.canvasToTempFilePath(opt, this); }, 1000); } },2.onReady動(dòng)態(tài)修改echarts[options]失敗
onReady: function() { let that = this; setTimeout(() => {//異步解決echarts實(shí)例沒(méi)有加載成功的無(wú)法設(shè)置options option.series[0].data[0].value = that.data.canvasListData chart.setOption(option); }, 500); } //提前聲明變量 let chart = null; var option = {}3.網(wǎng)絡(luò)圖片需下載到本地,注意配置downloadFile合法域名,尤其是微信頭像鏈接 4.相冊(cè)授權(quán)拒絕后,button不會(huì)再次彈出授權(quán)彈窗,openSetting強(qiáng)制打開(kāi)設(shè)置開(kāi)啟授權(quán)。 5.圓形頭像建議切鏤空?qǐng)D覆蓋,rect,clip有bug很難實(shí)現(xiàn)UI效果
建議查看:微信小程序社區(qū)的帖子。
6.cancvas要畫(huà)2倍圖,否則輸出圖片模糊 參考ECharts 的微信小程序版本。
小程序在安卓手機(jī)上繪制canvas,文字錯(cuò)亂。
drawImage畫(huà)圖在A(yíng)ndroid真機(jī)上顯示空白
安卓 canvas組件draw函數(shù)的回調(diào)不執(zhí)行
wx.canvasToTempFilePath安卓手機(jī)無(wú)法生成圖片
安卓手機(jī)獲取不到canvasToTempFilePath路徑的圖片
canvasdrawer
最后HTML頁(yè)面可以使用 html2canvas轉(zhuǎn)換節(jié)點(diǎn)生成圖片保存
基于html2canvas實(shí)現(xiàn)網(wǎng)頁(yè)保存為圖片及圖片清晰度優(yōu)化
TIPS由于時(shí)間限制,很多地方理解不夠深刻,瑕疵很多,歡迎提出
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/100380.html
摘要:再網(wǎng)上參考了一篇文章小程序?qū)崿F(xiàn)頁(yè)面轉(zhuǎn)化圖片并保存到相冊(cè)根據(jù)這篇文章的內(nèi)容,修改源碼,針對(duì)安卓機(jī)型寫(xiě)了兼容的配置,如果你的頁(yè)面只有一個(gè)圖表,就完全可以成功轉(zhuǎn)換了,如果是多個(gè)請(qǐng)修改的源碼,方法選擇就可以了。 最近做的小程序項(xiàng)目在echarts合成圖片的時(shí)候遇到了一些問(wèn)題,綜合了很多網(wǎng)友的經(jīng)驗(yàn),在此分享一下我的經(jīng)歷,如有錯(cuò)誤,歡迎指正。 1.在小程序中引入echarts組件請(qǐng)參考 echa...
摘要:第一步搭開(kāi)發(fā)環(huán)境首先,我們需要在本地搭建好微信小程序的開(kāi)發(fā)環(huán)境。在微信小程序中,所有的網(wǎng)絡(luò)請(qǐng)求受到嚴(yán)格限制,不滿(mǎn)足條件的域名和協(xié)議無(wú)法請(qǐng)求。第五步配置微信小程序云端示例鏡像中,已經(jīng)部署好了,但是還需要在下修改配置中的域名證書(shū)私鑰。 「小程序」這個(gè)劃時(shí)代的產(chǎn)品發(fā)布快一周了,互聯(lián)網(wǎng)技術(shù)人都在摩拳擦掌,躍躍欲試。可是小程序目前還在內(nèi)測(cè),首批只發(fā)放了 200 個(gè)內(nèi)測(cè)資格(淚流滿(mǎn)面)。本以為沒(méi)有...
閱讀 3031·2021-11-18 10:07
閱讀 3781·2021-11-17 17:00
閱讀 2111·2021-11-15 18:01
閱讀 938·2021-10-11 10:58
閱讀 3390·2021-09-10 10:50
閱讀 3465·2021-08-13 15:05
閱讀 1235·2019-08-30 15:53
閱讀 2659·2019-08-29 13:01