整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          微信內置瀏覽器動態生成二維碼并長按識別

          微信內置瀏覽器動態生成二維碼并長按識別


          如今圍繞微信生態相關開發已經非常常見,本期帶來如何通過 qrcode.js 實現微信內置瀏覽器動態生成二維碼并能夠長按識別 以及 通過 html2canvas 生成圖片并長按保存

          說幾個知識點

          微信長按彈出識別選項的原理

          • 微信客戶端檢測到用戶長按img標簽
          • 微信主動進行截屏并識別圖片,二維碼識別采用的是截屏而不是通過img標簽
          • 微信識別成功后執行相關操作

          Base64

          • Base64是網絡上最常見的用于傳輸8Bit字節碼的編碼方式之一,Base64就是一種基于64個可打印字符來表示二進制數據的方法

          Blob

          • HTML5中的Blob對象與MySQL中的BLOB對象有區別,HTML5中的Blob對象除了存放二進制數據外還可以設置這個數據的MINE類型,這相當于對文件的存儲,其它很多二進制對象也是從這個對象繼承的

          canvas.toDataURL([type, encoderOptions])

          • type : 指定圖片類型,默認值 image/png
          • encoderOptions : 為 image/jpegimage/webp 類型的圖片設置圖片質量,取值0-1,超出則以默認值0.92替代
          • 作用: 通過canvas進行轉化圖片

          準備工作

          結合微信規范明確需求

          • 微信img標簽通過src屬性可實現長按彈出選項(保存至手機,圖片為二維碼的情況下會出現識別二維碼)
          • 二維碼圖片若為本地圖片或服務器圖片(即不需要進行動態生成)只需要正常編寫代碼即可實現
          • 微信針對內置瀏覽器內的頁面圖片有著自己的一套適應邏輯與規范,canvas的圖片和base64編碼格式的圖片在安卓與ios手機上會出現不同的問題

          確定實現方案

          • 本例采用第三方js庫實現生成二維碼
          • 針對生成的base64編碼的圖片微信無法長按識別需要在前端進行格式和image對象重新轉換
          • 生成的圖片彈窗展示,避免出現其他元素影響微信識別率

          開發環境

          開發平臺

          • MacOS

          開發環境

          • Vue + node

          客戶端環境

          • Google Chrome
          • Wechat Webview

          技術實現

          本例的技術實現方案均在Vue項目環境下實現的

          引入第三方js庫

          提供兩種引入方式,兩種方式是不同的js庫,方便大家選擇和使用

          // 第一種方式
          // qrcode.js官方GitHub文檔: https://github.com/davidshimjs/qrcodejs
          <script src="static/js/qrcode.js"></script>
          
          // 第二種方式
          npm install qrcodejs2
          import qrCode from 'qrcodejs2'

          組件中調用

          HTML

          <div class="qrcode-panel" id="qrcode"></div>

          JS

          // 簡單調用
          new QRCode(document.getElementById('qrcode'), 'your content');
          // new QRCode(element, option)
          // element 顯示二維碼的元素或該元素的 ID
          // option 參數配置
          
          // 標準調用
          var qrcode=new QRCode(document.getElementById("qrcode"), {
          	text: "https://www.xxx.com?did=123456&id=123&userid=456",
          	width: 160, //圖像寬度
          	height: 160, // 圖像高度
          	render: 'canvas', // 生成格式(table 和 canvas)
          	colorDark : "#000000", //前景色
          	colorLight : "#ffffff", //背景色
          	correctLevel : QRCode.CorrectLevel.H // 容錯級別
          });
          // 容錯級別,可設置為:
          QRCode.CorrectLevel.L(最大 7% 的錯誤能夠被糾正)
          QRCode.CorrectLevel.M(最大 15% 的錯誤能夠被糾正)
          QRCode.CorrectLevel.Q(最大 25% 的錯誤能夠被糾正)
          QRCode.CorrectLevel.H(最大 30% 的錯誤能夠被糾正)
          
          // 其他公共方法
          QRCode.makeCode(text) // 設置二維碼內容
          QRCode.clear() // 清除二維碼
          

          重置 Image 對象

          重置的原因是原JS生成的 image 和 canvas 對象無法在微信端長按識別

          var canvas=document.getElementsByTagName('canvas')[0];
          var img=this.convertCanvasToImage(canvas);
          document.getElementById("qrcode").append(img);
          
          convertCanvasToImage(canvas) {
          	//新建Image對象
          	var image=new Image();
          	// canvas.toDataURL 返回的是一串Base64編碼的URL
          	image.src=canvas.toDataURL("image/png");
          	image.id='qrcodeImg';
          	return image;
          }
          

          后續細節處理

          至此,一個能夠滿足長按識別的動態二維碼已經生成,不繼續處理的話會有兩張二維碼,長按對比就能看出,qrcode.js 生成的二維碼長按無法識別,而經過重置之后的對象是可以實現此功能的。

          我的處理方式是兩個二維碼都保留,將二維碼圖片進行重新定位,將重置的二維碼圖片置于不能識別二維碼上層,不去頻繁操作DOM節點的顯示隱藏。

          生成的二維碼通過 append 的方式插入到dom節點中,在關閉操作時需要將之前生成的 canvasimage 去除

          微信內置瀏覽器生成canvas圖片保存

          上述教程可以實現動態生成二維碼進行保存和長按識別,但是如果需要將HTML內容生成canvas保存就存在問題了。

          針對保存需要注意的幾個問題:

          • canvas禁止跨域
          • 安卓微信長按不能保存base64圖片
          • 微信限制Blob類型圖片的保存
          • 使用 canvas.toDataURL 繪制時的類型使用 image/jpeg 進行保存

          技術選型

          使用第三方JS庫 html2canvas 進行處理

          識別和生成原理:

          • 腳本直接在用戶瀏覽器上截取網頁或部分網頁的"屏幕截圖"
          • "屏幕截圖"基于DOM,因此它可能不是真實表示的100%準確,因為它沒有制作實際的屏幕截圖,而是根據頁面上可用的信息構建屏幕截圖

          存在的問題:

          • 正是因為 html2canvas 不是基于真正的屏幕截圖去識別處理,所以脫離了文檔流,或者文檔流異常的元素會無法被截取下來
          • html2canvas 只會截取到目標元素寬高范圍內的內容
          • 對部分css樣式支持不好,兼容性差的屬性列表請 后臺留言獲取

          一些可能需要的參數

          • useCORS : 是否嘗試使用CORS從服務器加載圖像
          • async : 是否異步解析和呈現元素
          • scale : 用于渲染的比例。默認為瀏覽器設備像素比率window.devicePixelRatio
          • allowTaint : 是否允許畫布被污染,被污染的canvas是沒法使用toDataURL()轉base64流的,部分細節請 后臺留言獲取
          • 更多 html2canvas 參數請 后臺留言獲取

          引入第三方JS庫

          使用 html2canvas

          import html2canvas from 'html2canvas'

          組件中調用

          HTML

          <div class="html2canvas-conetent" ref="canvasContent">
          	<img src="/static/images/canvas.jpg">
          	<span>測試Title</span>
          </div>
          <button @click="showCanvas()">生成canvas圖片</button>
          

          JS

          • 使用 html2canvas 推薦的promise方法
          showCanvas() {
          	let self=this;
          	html2canvas(self.$refs.canvasContent).then(function(canvas) {
                  self.imgUrl=canvas.toDataURL();
                  self.showCanvasImg=true;
          	});
          }
          // 異步解析調用和呈現元素
          showCanvas() {
          	let self=this;
          	html2canvas(self.$refs.canvasContent  {
          		async: true
          	}).then(canvas=> {
          		self.imgUrl=canvas.toDataURL();
          		self.showCanvasImg=true;
          	});
          }
          
          

          實現效果

          源碼地址

          • Github地址(請點擊原文鏈接查看)

          ello各位朋友們大家新的一月好呀!我是咕嚕鐵蛋!我知道在小程序開發中,有時候需要將H5頁面轉換成微信小程序頁面。這樣可以將原本的網頁內容適配到小程序中,讓用戶能夠更方便地訪問和使用。在本文中,我將分享如何快速將H5頁面轉換成微信小程序頁面的方法。

          1. 使用第三方工具

          第三方工具是將H5頁面轉換成微信小程序頁面的最簡單、最快捷的方法之一。可以使用現有的工具,例如Mpvue、Taro等,它們提供了一些插件和模板,可以快速地將H5頁面轉換成微信小程序頁面。這些工具使用MVVM框架,使得代碼的復用性更強,同時也提高了開發效率。

          2. 手動實現

          如果想要更深入地理解H5頁面和微信小程序頁面的區別,并掌握更多定制化的操作,可以手動實現轉換。雖然這種方法比較耗費時間和精力,但是對于一些定制化要求比較高的開發項目來說,是必要的。此時,我們可以按照以下步驟進行操作:

          (1)將H5頁面中的標簽替換成小程序中的標簽;

          (2)將H5頁面中的CSS樣式修改成小程序中的樣式;

          (3)將H5頁面中的JavaScript代碼修改成小程序中的代碼;

          (4)將H5頁面中的數據請求替換成小程序中的數據請求方式。

          手動實現雖然比較繁瑣,但是可以更好地掌握H5頁面和微信小程序頁面的區別,從而能夠更好地適應不同的開發需求。

          3. 使用wepy框架

          wepy是一個基于Vue.js的小程序開發框架。它提供了一些組件、插件和API,可以快速地將H5頁面轉換成微信小程序頁面。使用wepy框架后,我們可以直接在Vue.js中編寫代碼,使用類似于Vue.js的語法來編寫小程序頁面。這樣,不僅能夠提高開發效率,還能夠提高代碼的復用性和可維護性。

          總結起來,快速將H5頁面轉換成微信小程序頁面有多種方法。可以使用第三方工具、手動實現、或者使用wepy框架來進行操作。每種方法都有其優劣之處,需要根據不同的項目需求和自己的技術水平來選擇。作為博主,我們應該不斷學習和探索,及時解決遇到的問題,并與讀者分享經驗和解決方案。希望這篇文章對你有所幫助!

          為熱衷于分享與交流的我,關注著如何將微信公眾號文章采集至論壇這個議題。此非單純技術問題,而是關乎信息傳播及共享之道。本文將對此議題進行深入探討,期待能為各位提供啟示與助益。

          微信公眾號文章的價值

          微信公眾號匯集諸多領域優秀創作者,其發布的作品囊括廣泛維度的內容,包括知識與技能、情感表達及行業洞見等,均為作者對社會、生活和職業的深入思索與經驗總結。因此,將此類優質文章采集至論壇,不僅能為論壇注入新的活力,更可使廣大受眾從中獲益,共享并傳遞有益信息。

          技術挑戰與解決方案

          將微信公眾號文章引入論壇并非易事,面臨諸多技術難題。其一,由于微信公眾號文章以HTML形式編排,與論壇所用的格式有所出入,需作相應轉換。次之,微信公眾號文中常含各類多媒體,如圖文并茂或是視音頻交融,如何精確同步至論壇亦成為待解課題。此外,版權與法律方面考量不容忽視,以確保證采摘行動的合法性及規范性。

          面對這些科技難題,有以下對策可供采納。首先,可以研發一套全自動采集程序,運用爬蟲技術搜集微信公眾號的相關文章,并進行格式調整及排版美化后,再將其發表至相應論壇。其次,借助第三方應用或API,完成對多媒體素材的同步與轉化。最后,務必在采集環節添加著作權識別與風險管控功能,保證所有操作的合法性與合規性。

          社區運營與管理

          除技術難題之外,在將微信公號文章引入論壇時,需關注社區運營與管理方面。首先,專設板塊或頻道以展示所采文章;其次,制定嚴謹審核體系,包括內容及版權審查,保證文章質量與合法性;最后,組建專職運營團隊,負責社區日常管理和維護工作,高效回應并妥善解決用戶反饋。

          用戶體驗與反饋

          最終,微信公眾號文章能否成功采摘至論壇,其關鍵在于用戶的整體感受與反響。為此,我們需持續精煉并改良我們的采摘體系以提高其用戶適應性。可通過用戶研究與反饋獲取用戶建議,基于這些需求進行調整和改善。同時,運用數據分析工具解析用戶行為,挖掘潛在問題及改進可能,從而進一步提高用戶滿意度以及留存率。

          潛在問題與風險

          在微信公號文章轉帖至論壇的過程中,我們需留意潛在的問題與風險。首要考慮的是如何應對微信公號平臺的反爬蟲機制。同時,需警惕可能引發的版權爭議及法律風險,提升版權保護與風險預防意識至關重要。另外,還需關注用戶反感情緒和抵觸行為,適時調整策略和應對措施,防止負面效應產生。

          未來展望與發展方向

          雖然在論壇中引入微信公眾號文章存在諸多難點及風險,然深信隨著科技與社會的持續進步,此類問題皆可迎刃而解。展望未來,期待更多優質微信公眾號文章得以引入論壇,實現信息共享與傳播。堅信只要持之以恒,必能達成此愿景,使廣大民眾從中獲益。


          主站蜘蛛池模板: 视频一区视频二区制服丝袜| 国产成人综合一区精品| 亚洲一区无码中文字幕| 91无码人妻精品一区二区三区L| 日韩人妻一区二区三区免费| 午夜视频久久久久一区| 日韩人妻不卡一区二区三区| 精品免费久久久久国产一区| 在线观看亚洲一区二区| 国产亚洲一区二区三区在线不卡| 国产福利一区二区精品秒拍| 一区一区三区产品乱码| 亚洲一区二区久久| jazzjazz国产精品一区二区| 日韩在线视频不卡一区二区三区 | 国产一区在线播放| 国产精品视频无圣光一区| 亚洲日韩中文字幕一区| 2022年亚洲午夜一区二区福利| 久久精品无码一区二区日韩AV| 一级特黄性色生活片一区二区 | 一区二区三区波多野结衣| 夜夜精品无码一区二区三区| 视频在线观看一区二区三区| 日韩精品一区二区三区不卡| 国产精品福利区一区二区三区四区| 麻豆精品一区二区综合av| 国产一区风间由美在线观看| 午夜一区二区免费视频| 国产成人精品a视频一区| 中文字幕一区二区人妻| 亚洲AV无码一区二区三区DV| 亚洲综合一区二区精品久久| 无码人妻精品一区二区三区蜜桃| 丝袜美腿一区二区三区| 无码一区二区三区亚洲人妻| 国产亚洲情侣一区二区无码AV | 久久一本一区二区三区| 亚洲av成人一区二区三区观看在线 | 东京热人妻无码一区二区av| 变态拳头交视频一区二区|