html2canvas截圖相關(guān)的問題

真幾把坑

需求

微信端的H5活動(dòng)
  • 獲取到用戶頭像
  • 生成關(guān)注公眾號使用的帶參數(shù)的二維碼
  • 通過答題生成一張海報(bào),海報(bào)長按保存,保存這張海報(bào)到手機(jī)。
  • 用戶把這張圖片發(fā)送給朋友,朋友點(diǎn)開圖片識別圖中的二維碼。進(jìn)入公眾號執(zhí)行相關(guān)操作。

思路

  • 先把整個(gè)布局做好
  • 布局中把獲取到的微信頭像和二維碼用img加載好,放在<poster></poster>
  • 用html2canvas截取<poster>,生成圖片

坑來了。草

html2canvas截圖的跨域問題。這個(gè)不多說了。網(wǎng)上一大堆。沒幾個(gè)好用的。

我用過的方法如下,如果有看到的就別用了。
  • 把微信頭像的src轉(zhuǎn)成base64位編碼。(http://thirdwx.qlogo.cn/類似這個(gè)地址, 可以用canvas畫??梢援嫵鰜?。網(wǎng)上就好多,代碼拷貝就能用),轉(zhuǎn)換成base64之后,用html2canvas親測可以截出來。
  • 微信的二維碼也用上面的方式,用canvas就不能轉(zhuǎn)base64了。后來找到qrcode.js,轉(zhuǎn)成功了。轉(zhuǎn)成功了之后,發(fā)現(xiàn)html2canvas截不了了。報(bào)跨域錯(cuò)誤。因?yàn)?code>mp.weixin.qq.com開頭的域名不支持跨域訪問。這幾把就坑了。網(wǎng)上說的用html2canvas自帶參數(shù)useCORS: true,這個(gè)是求用沒有。不知道你是不是當(dāng)真用這個(gè)解決了問題。反正我是沒解決?。。?!

那不多比比了,解決方案如下:

  • 第一種:
    把前端代碼要部署到的服務(wù)器里設(shè)置nginx代理。代理到mp.weixin.qq.com,就不涉及到跨域問題。
  • 第二種:
    把獲取到的微信二維碼地址發(fā)送給后臺(tái)。讓后臺(tái)出個(gè)接口。給你返回一個(gè)服務(wù)器域名的地址,(就是相當(dāng)于把二維碼下載到服務(wù)器磁盤,再給你一個(gè)服務(wù)器請求圖片的地址)

補(bǔ)充

  • 如果我說的這兩種的其中任何一種解決不了。給我你的微信號。開視頻。我當(dāng)你面吃狗屎?。?!
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,366評論 25 708
  • 用兩張圖告訴你,為什么你的 App 會(huì)卡頓? - Android - 掘金 Cover 有什么料? 從這篇文章中你...
    hw1212閱讀 14,144評論 2 59
  • 本文適用人群 需要在微信wap頁開發(fā)分享海報(bào)功能的前端程序員們 想要了解html2canvas庫的吃瓜群眾 掙扎在...
    朝顏vivian閱讀 10,373評論 4 17
  • 好久沒更新了,回來了突然不知道說啥 不過你們應(yīng)該都沒有發(fā)現(xiàn) 畢竟沒人留言也沒有掉粉 這束花拍了好幾遍了,七夕也算應(yīng)...
    每顆橙子閱讀 181評論 0 0
  • 這本書的確是軟件工程領(lǐng)域一本再經(jīng)典不過的書籍,在尚未開始學(xué)習(xí)編程的時(shí)候便聽說過這本書,大約是從蕭瓜的答案里。在剛參...
    古二白閱讀 801評論 0 0

友情鏈接更多精彩內(nèi)容