jquery canvas生成帶有二維碼的海報(bào)
本文實(shí)例為大家分享了jquery canvas生成帶有二維碼海報(bào)的具體代碼,供大家參考,具體內(nèi)容如下
需求:點(diǎn)擊圖片彈窗生成帶有二維碼的海報(bào)。
遇到相關(guān)問(wèn)題:
1、生成的圖片會(huì)模糊、不清晰。
2、 蘋(píng)果手機(jī)和安卓手機(jī) 文字位置和字體大小有差異。
引入所需要的文件
//jquery.js <script type="text/javascript" src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script> //解決生成的圖片模糊、不清晰問(wèn)題 <script src="/images/202010/hidpi-canvas.min.js"></script>
生成海報(bào)圖片
<script> // 執(zhí)行代碼 $(function () { // 像素密度 如果沒(méi)這段代碼生成的圖片可能會(huì)模糊 function getPixelRatio(context) { var backingStore = context.backingStorePixelRatio || context.webkitBackingStorePixelRatio || context.mozBackingStorePixelRatio || context.msBackingStorePixelRatio || context.oBackingStorePixelRatio || context.backingStorePixelRatio || 1; return (window.devicePixelRatio || 1) / backingStore; }; //點(diǎn)擊事件 $(".myImg").click(function () { $(".dialog").fadeIn(); var dialogSrc = $(this).attr("src") var csrfToken = document.querySelector('meta[name="csrf-token"]').getAttribute('content'); //2.發(fā)送請(qǐng)求 $.ajax({ url: "xxxx", type: "post", dataType: 'json', headers: { 'X-CSRF-TOKEN': csrfToken }, //設(shè)置請(qǐng)求頭 success: function (res) { var canvas = document.createElement("canvas"); var context = canvas.getContext("2d"); var ratio = getPixelRatio(context) canvas.width = 262 * ratio; canvas.height = 450 * ratio; context.rect(0, 0, canvas.width * ratio, canvas.height * ratio); context.fillStyle = "#fff"; context.fill(); var myImage2 = new Image(); //背景圖 myImage2.src = dialogSrc //獲取終端 var u = navigator.userAgent; var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android終端 var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios終端 myImage2.onload = function () { context.drawImage(myImage2, 0, 0, 262 * ratio, 450 * ratio); //文本 var text = res.data.company + ',' + res.data.sales; var str = new Array(); str = text.split(","); var uphight = 0 //解決蘋(píng)果手機(jī)和安卓手機(jī) 文字位置和字體大小顯示差異問(wèn)題 for (var i = 0; i < str.length; i++) { if (isAndroid) { context.font = "12px Calibri"; context.fillText(str[i], 70, 390 + uphight) uphight += 20 } if (isiOS) { context.font = "20px Calibri"; context.fillText(str[i], 140, 450 * ratio - 120 + uphight) uphight += 40 } } var myImage = new Image(); //二維碼圖片 myImage.src = res.data.wxcode myImage.crossOrigin = 'Anonymous'; myImage.onload = function () { context.drawImage(myImage, 30, 380 * ratio, 48 * ratio, 50 * ratio); var base64 = canvas.toDataURL("image/jpeg", 1.0); var img = document.getElementById('myPoster'); img.setAttribute('src', base64); } } }, error: function (e) { console.log('ajax請(qǐng)求異常,異常信息如下:', e); } }); }); //關(guān)閉彈窗 $(".close").click(function () { $(".dialog").fadeOut(); }) }); </script>
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 基于jQuery和CSS3實(shí)現(xiàn)APPLE TV海報(bào)視差效果
- 利用jquery包將字符串生成二維碼圖片
- 利用jquery.qrcode在頁(yè)面上生成二維碼且支持中文
- 使用jquery組件qrcode生成二維碼及應(yīng)用指南
- 使用jquery.qrcode生成彩色二維碼實(shí)例
- javaScript生成支持中文帶logo的二維碼(jquery.qrcode.js)
- jquery插件qrcode在線生成二維碼
- 使用jQuery.Qrcode插件在客戶端動(dòng)態(tài)生成二維碼并添加自定義Logo
- jquery.qrcode在線生成二維碼使用示例
- jQuery 生成svg矢量二維碼
相關(guān)文章
從零開(kāi)始學(xué)習(xí)jQuery (一) 開(kāi)天辟地入門(mén)篇
本篇文章是入門(mén)第一篇, 主要是簡(jiǎn)單介紹jQuery, 通過(guò)簡(jiǎn)單示例指導(dǎo)大家如何編寫(xiě)jQuery代碼以及搭建開(kāi)發(fā)環(huán)境. 詳細(xì)講解了如何在Visual Studio中配合使用jQuery.2010-10-10利用浮層使select不可選的實(shí)現(xiàn)方法
下面小編就為大家?guī)?lái)一篇利用浮層使select不可選的實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧,祝大家游戲愉快哦2016-12-12jQuery插件slider實(shí)現(xiàn)拖動(dòng)滑塊選取價(jià)格范圍
jquery滑塊(slider)允許用戶從一個(gè)有限的范圍內(nèi)選擇一個(gè)數(shù)值。當(dāng)沿著軌道移動(dòng)滑塊控件時(shí),將顯示一個(gè)表示當(dāng)前值的提示框,用戶可通過(guò)設(shè)置它的屬性來(lái)自定義滑塊。2015-04-04jQuery 1.9.1源碼分析系列(十五)動(dòng)畫(huà)處理之緩動(dòng)動(dòng)畫(huà)核心Tween
這篇文章主要介紹了jQuery 1.9.1源碼分析系列(十五)動(dòng)畫(huà)處理之緩動(dòng)動(dòng)畫(huà)核心Tween 的相關(guān)資料,需要的朋友可以參考下2015-12-12jquery的Tooltip插件 qtip使用詳細(xì)說(shuō)明
qTip是一個(gè)基于JQuery的Tooltip插件。它幾乎支持所有的主流瀏覽器。2010-09-09Jquery插件easyUi表單驗(yàn)證提交(示例代碼)
本篇文章主要是對(duì)Jquery插件easyUi表單驗(yàn)證提交的示例代碼進(jìn)行了介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2013-12-12JQuery中serialize()、serializeArray()和param()方法示例介紹
serialize()方法也是作用于一個(gè)JQuery對(duì)象,它能夠?qū)OM元素內(nèi)容序列化為字符串,serializeArray()方法不是返回字符串,而是將DOM元素序列化后,返回JSON格式的數(shù)據(jù)2014-07-07jQuery實(shí)現(xiàn)跟隨鼠標(biāo)運(yùn)動(dòng)圖層效果的方法
這篇文章主要介紹了jQuery實(shí)現(xiàn)跟隨鼠標(biāo)運(yùn)動(dòng)圖層效果的方法,可實(shí)現(xiàn)實(shí)時(shí)顯示鼠標(biāo)坐標(biāo)的圖層跟隨鼠標(biāo)運(yùn)動(dòng)的效果,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-02-02