var QRCode; (function(){function E(a){this.mode=r.MODE_8BIT_BYTE;this.data=a;this.parsedData=[];a=0;for(var c=this.data.length;a>>18,b[1]=128|(d&258048)>>>12,b[2]=128|(d&4032)>>>6,b[3]=128|d&63):2048>>12,b[1]=128|(d&4032)>>>6,b[2]=128|d&63):128>>6,b[1]=128|d&63):b[0]=d;this.parsedData.push(b)}this.parsedData=Array.prototype.concat.apply([],this.parsedData);this.parsedData.length!=this.data.length&&(this.parsedData.unshift(191), this.parsedData.unshift(187),this.parsedData.unshift(239))}function t(a,c){this.typeNumber=a;this.errorCorrectLevel=c;this.modules=null;this.moduleCount=0;this.dataCache=null;this.dataList=[]}function x(a,c){if(void 0==a.length)throw Error(a.length+"/"+c);for(var b=0;ba||this.moduleCount<=a||0>c||this.moduleCount<=c)throw Error(a+","+c);return this.modules[a][c]},getModuleCount:function(){return this.moduleCount}, make:function(){this.makeImpl(!1,this.getBestMaskPattern())},makeImpl:function(a,c){this.moduleCount=4*this.typeNumber+17;this.modules=Array(this.moduleCount);for(var b=0;b=b;b++)if(!(-1>=a+b||this.moduleCount<=a+b))for(var d=-1;7>=d;d++)-1>=c+d||this.moduleCount<=c+d||(this.modules[a+b][c+d]=0<=b&&6>=b&&(0==d||6==d)||0<=d&&6>=d&&(0==b||6==b)||2<=b&&4>=b&&2<=d&&4>=d?!0:!1)},getBestMaskPattern:function(){for(var a=0,c=0,b=0;8>b;b++){this.makeImpl(!0, b);var d=m.getLostPoint(this);if(0==b||a>d)a=d,c=b}return c},createMovieClip:function(a,c,b){a=a.createEmptyMovieClip(c,b);this.make();for(c=0;c=g;g++)for(var h=-2;2>=h;h++)this.modules[d+g][e+h]=-2==g||2==g||-2==h||2==h||0==g&&0==h?!0:!1}},setupTypeNumber:function(a){for(var c=m.getBCHTypeNumber(this.typeNumber),b=0;18>b;b++){var d=!a&&1==(c>>b&1);this.modules[Math.floor(b/3)][b%3+this.moduleCount- 8-3]=d}for(b=0;18>b;b++)d=!a&&1==(c>>b&1),this.modules[b%3+this.moduleCount-8-3][Math.floor(b/3)]=d},setupTypeInfo:function(a,c){c=m.getBCHTypeInfo(this.errorCorrectLevel<<3|c);for(var b=0;15>b;b++){var d=!a&&1==(c>>b&1);6>b?this.modules[b][8]=d:8>b?this.modules[b+1][8]=d:this.modules[this.moduleCount-15+b][8]=d}for(b=0;15>b;b++)d=!a&&1==(c>>b&1),8>b?this.modules[8][this.moduleCount-b-1]=d:9>b?this.modules[8][15-b-1+1]=d:this.modules[8][15-b-1]=d;this.modules[this.moduleCount-8][8]=!a},mapData:function(a, c){for(var b=-1,d=this.moduleCount-1,e=7,g=0,h=this.moduleCount-1;0f;f++)if(null==this.modules[d][h-f]){var k=!1;g>>e&1));m.getMask(c,d,h-f)&&(k=!k);this.modules[d][h-f]=k;e--;-1==e&&(g++,e=7)}d+=b;if(0>d||this.moduleCount<=d){d-=b;b=-b;break}}}};t.PAD0=236;t.PAD1=17;t.createData=function(a,c,b){c=u.getRSBlocks(a,c);for(var d=new F,e=0;e8*a)throw Error("code length overflow. ("+d.getLengthInBits()+">"+8*a+")");for(d.getLengthInBits()+4<=8*a&&d.put(0,4);0!=d.getLengthInBits()%8;)d.putBit(!1);for(;!(d.getLengthInBits()>=8*a);){d.put(t.PAD0,8);if(d.getLengthInBits()>=8*a)break;d.put(t.PAD1,8)}return t.createBytes(d,c)};t.createBytes=function(a,c){for(var b=0,d=0,e=0,g=Array(c.length),h=Array(c.length),f=0;f>>=1;return c},getPatternPosition:function(a){return m.PATTERN_POSITION_TABLE[a-1]},getMask:function(a,c,b){switch(a){case 0:return 0==(c+b)%2;case 1:return 0==c%2;case 2:return 0==b%3;case 3:return 0==(c+b)%3;case 4:return 0==(Math.floor(c/2)+Math.floor(b/3))%2;case 5:return 0==c*b%2+c*b%3;case 6:return 0==(c*b%2+c*b%3)%2;case 7:return 0==(c*b%3+(c+b)%2)%2;default:throw Error("bad maskPattern:"+a);}},getErrorCorrectPolynomial:function(a){for(var c= new x([1],0),b=0;bc)switch(a){case r.MODE_NUMBER:return 10;case r.MODE_ALPHA_NUM:return 9;case r.MODE_8BIT_BYTE:return 8;case r.MODE_KANJI:return 8;default:throw Error("mode:"+a);}else if(27>c)switch(a){case r.MODE_NUMBER:return 12;case r.MODE_ALPHA_NUM:return 11;case r.MODE_8BIT_BYTE:return 16;case r.MODE_KANJI:return 10;default:throw Error("mode:"+a);}else if(41>c)switch(a){case r.MODE_NUMBER:return 14; case r.MODE_ALPHA_NUM:return 13;case r.MODE_8BIT_BYTE:return 16;case r.MODE_KANJI:return 12;default:throw Error("mode:"+a);}else throw Error("type:"+c);},getLostPoint:function(a){for(var c=a.getModuleCount(),b=0,d=0;d=f;f++)if(!(0>d+f||c<=d+f))for(var k=-1;1>=k;k++)0>e+k||c<=e+k||(0!=f||0!=k)&&h==a.isDark(d+f,e+k)&&g++;5a)throw Error("glog("+a+ ")");return p.LOG_TABLE[a]},gexp:function(a){for(;0>a;)a+=255;for(;256<=a;)a-=255;return p.EXP_TABLE[a]},EXP_TABLE:Array(256),LOG_TABLE:Array(256)},q=0;8>q;q++)p.EXP_TABLE[q]=1<q;q++)p.EXP_TABLE[q]=p.EXP_TABLE[q-4]^p.EXP_TABLE[q-5]^p.EXP_TABLE[q-6]^p.EXP_TABLE[q-8];for(q=0;255>q;q++)p.LOG_TABLE[p.EXP_TABLE[q]]=q;x.prototype={get:function(a){return this.num[a]},getLength:function(){return this.num.length},multiply:function(a){for(var c=Array(this.getLength()+a.getLength()-1),b=0;bthis.getLength()-a.getLength())return this;for(var c=p.glog(this.get(0))-p.glog(a.get(0)),b=Array(this.getLength()),d=0;d>>7-a%8&1)},put:function(a,c){for(var b=0;b>>c-b-1&1))},getLengthInBits:function(){return this.length},putBit:function(a){var c=Math.floor(this.length/8);this.buffer.length<=c&&this.buffer.push(0);a&&(this.buffer[c]|=128>>> this.length%8);this.length++}};var y=[[17,14,11,7],[32,26,20,14],[53,42,32,24],[78,62,46,34],[106,84,60,44],[134,106,74,58],[154,122,86,64],[192,152,108,84],[230,180,130,98],[271,213,151,119],[321,251,177,137],[367,287,203,155],[425,331,241,177],[458,362,258,194],[520,412,292,220],[586,450,322,250],[644,504,364,280],[718,560,394,310],[792,624,442,338],[858,666,482,382],[929,711,509,403],[1003,779,565,439],[1091,857,611,461],[1171,911,661,511],[1273,997,715,535],[1367,1059,751,593],[1465,1125,805, 625],[1528,1190,868,658],[1628,1264,908,698],[1732,1370,982,742],[1840,1452,1030,790],[1952,1538,1112,842],[2068,1628,1168,898],[2188,1722,1228,958],[2303,1809,1283,983],[2431,1911,1351,1051],[2563,1989,1423,1093],[2699,2099,1499,1139],[2809,2213,1579,1219],[2953,2331,1663,1273]],H=function(){var a=function(c,b){this._el=c;this._htOption=b};a.prototype.draw=function(c){function b(k,n){k=document.createElementNS("http://www.w3.org/2000/svg",k);for(var l in n)n.hasOwnProperty(l)&&k.setAttribute(l,n[l]); return k}var d=this._htOption,e=this._el,g=c.getModuleCount();this.clear();var h=b("svg",{viewBox:"0 0 "+String(g)+" "+String(g),width:"100%",height:"100%",fill:d.colorLight});h.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink","http://www.w3.org/1999/xlink");e.appendChild(h);h.appendChild(b("rect",{fill:d.colorLight,width:"100%",height:"100%"}));h.appendChild(b("rect",{fill:d.colorDark,width:"1",height:"1",id:"template"}));for(d=0;d'],k=0;k");for(var n=0;n');f.push("")}f.push("");d.innerHTML=f.join("");c=d.childNodes[0];d=(b.width-c.offsetWidth)/2;b=(b.height-c.offsetHeight)/2;0=this._android){var b=1/window.devicePixelRatio,d=CanvasRenderingContext2D.prototype.drawImage;CanvasRenderingContext2D.prototype.drawImage=function(g,h,f,k,n,l,z,A,B){if("nodeName"in g&&/img/i.test(g.nodeName))for(var w=arguments.length-1;1<=w;w--)arguments[w]*=b;else"undefined"==typeof A&&(arguments[1]*=b,arguments[2]*=b,arguments[3]*=b,arguments[4]*=b);d.apply(this, arguments)}}var e=function(g,h){this._bIsPainted=!1;this._android=G();this._htOption=h;this._elCanvas=document.createElement("canvas");this._elCanvas.width=h.width;this._elCanvas.height=h.height;g.appendChild(this._elCanvas);this._el=g;this._oContext=this._elCanvas.getContext("2d");this._bIsPainted=!1;this._elImage=document.createElement("img");this._elImage.alt="Scan me!";this._elImage.style.display="none";this._el.appendChild(this._elImage);this._bSupportDataURI=null};e.prototype.draw=function(g){var h= this._elImage,f=this._oContext,k=this._htOption,n=g.getModuleCount(),l=k.width/n,z=k.height/n,A=Math.round(l),B=Math.round(z);h.style.display="none";this.clear();for(h=0;hy.length)throw Error("Too long data");this._oQRCode=new t(b,this._htOption.correctLevel);this._oQRCode.addData(a);this._oQRCode.make();this._el.title=a;this._oDrawing.draw(this._oQRCode);this.makeImage()};QRCode.prototype.makeImage=function(){"function"==typeof this._oDrawing.makeImage&&(!this._android||3<=this._android)&&this._oDrawing.makeImage()};QRCode.prototype.clear=function(){this._oDrawing.clear()};QRCode.CorrectLevel=v})(); //将图片装载完毕,然后再绘图 var imgs = {}; //获取变量 var $logo_img="",$bg_img="",$goods_img="",$bg_img1="",$goods_img1="",$qrcodetext,$qrcodedes,$goods_title,$goods_price,$goods_mktprice,$goods_validText,$goods_desc; var bingimage=false; const datedata = {}; datedata.day="21",datedata.month="02",datedata.year="2025",datedata.week="星期五",datedata.nonglinian="乙巳年",datedata.nongli="正月廿四",datedata.yi="沐浴.安葬.祭祀.合寿木.开生坟.入殓.移柩.成服.除服.破土.斋醮",datedata.ji="结婚.会亲友.搬新房.开业.安床.作灶.上梁";var plusurl="/plus/";$bg_img1="https://cn.bing.com//th?id=OHR.ChampakaSarasi_ZH-CN0254940579_768x1280.jpg";bingimage=true; //console.log(datedata); //这些内容可以在页面内多次定义,但取第一个值 var t_share_logo=document.querySelector("input[name='share_logo']") ; //海报logo var t_share_bg=document.querySelector("input[name='share_bg']") ; //海报背景图 var t_share_img=document.querySelector("input[name='share_img']") ; //海报主图 var t_share_qrcodetext=document.querySelector("input[name='share_qrcodetext']") ; //二维码文字链接 var t_share_qrcodedes=document.querySelector("input[name='share_qrcodedes']") ; //二维码文字描述 var t_share_title=document.querySelector("input[name='share_title']") ; //海报标题文字 var t_share_price=document.querySelector("input[name='share_price']") ; //商品价格 var t_share_mktprice=document.querySelector("input[name='share_mktprice']") ; //市场价格,显示为删除模式 var t_share_validText=document.querySelector("input[name='share_validText']") ; //有效期 var t_description=document.querySelector('meta[name="description"]'); //页面描述 if (t_share_logo!= null){$logo_img=t_share_logo.value;} if (t_share_bg!= null){$bg_img=t_share_bg.value} if (t_share_img!= null){$goods_img=t_share_img.value;} if ($logo_img!=""){imgs.logo_img=$logo_img;} //优先使用节日背景和主图 if ($bg_img!=""){imgs.bg_img=$bg_img;} if ($bg_img1!=""){$bg_img=$bg_img1;imgs.bg_img=$bg_img1;} if ($goods_img!=""){imgs.goods_img=$goods_img;} if ($goods_img1!=""){$goods_img=$goods_img1;imgs.goods_img=$goods_img1;} if (t_share_qrcodetext!= null){$qrcodetext=t_share_qrcodetext.value;} if (t_share_qrcodedes!= null){$qrcodedes=t_share_qrcodedes.value;} if (t_share_title!= null){$goods_title=t_share_title.value;} if (t_share_price!= null){$goods_price=t_share_price.value;} if (t_share_mktprice!= null){$goods_mktprice=t_share_mktprice.value;} if (t_share_validText!= null){$goods_validText=t_share_validText.value;} if (t_description!= null){$goods_desc=t_description.content;} //$goods_desc=$goods_desc.replace(/^\s\s*/, '' ).replace(/\s\s*$/, '' ); //console.log($goods_img); //生成二维码 var qrCodeDiv = document.createElement('div'); if ($qrcodetext==""){ $qrcodetext="http://www.chinaz.top"; } new QRCode(qrCodeDiv, { text: $qrcodetext, width: 180, height: 180 });//var thisqrcode= qrCodeDiv.lastChild; //console.log(thisqrcode); //try{document.querySelector(".pageqrcode").appendChild(thisqrcode);}catch(e){} var thisnum=parseInt(Math.random()* 25)+1; //生成随机背景 var issuijibg =false ; //是随机背景 if ($goods_img=="" && $bg_img==""){//随机背景 $bg_img=plusurl+"share/images/bg/"+thisnum+".jpg";issuijibg=true;imgs.bg_img=$bg_img; } //function createhaibao(){ var imgsToInstances= function (imgs, callback) { const len = Object.keys(imgs).length; const instances = {}; let finished = 0; for (const key in imgs) { const image = new Image(); image.crossOrigin = "anonymous"; image.src = imgs[key]; image.onload = () => { // 图片实例化成功后存起来 instances[key] = image; instances[key+"w"] = image.width; instances[key+"h"] = image.height; finished++; if (finished === len) { instances['qrcode'] = qrCodeDiv.lastChild; //console.log(instances['qrcode']) callback(instances); } } //console.log(imgs[key]) } //console.log(instances) }; var drawText=function (ctx, t, x, y, w, s,hangshu) { let char = t.split('');// 文字数组 let temp = '';// 每行临时变量 let row = [];// 行文字数组 let max_row = hangshu; for (let a = 0; a < char.length; a++) { if (ctx.measureText(temp).width >= w) { row.push(temp); temp = ''; } temp += char[a]; } row.push(temp); for (let b = 0; b < row.length; b++) { if (b >= max_row) break; if (b == (max_row - 1)) { if (row[b + 1] != undefined) { let _suffix = '...'; let _suffix_len = Math.ceil(ctx.measureText(_suffix).width); let _len = Math.ceil(ctx.measureText(row[b]).width) - _suffix_len; row[b] = row[b].substr(0, _len) + '...'; } } ctx.fillText(row[b], x, y + (b + 1) * (s + 10)); } }; imgsToInstances(imgs, instances => { //console.log("开始") /*canvas*/ var canvas = document.createElement("canvas"); //var canvas = document.getElementById("canvas"); var canvas_width=750; var canvas_height=1066; canvas.width = canvas_width; //画布宽度像素 canvas.height = canvas_height; //画布高度像素 //定义四周边界 var bianjie=50; var ctx = canvas.getContext("2d"); // 绘制背景框 ctx.rect(0, 0, canvas_width, canvas_height); ctx.fillStyle = '#FFFFFF'; ctx.fill(); //console.log("填充背景色") ctx.strokeStyle="#666666"; ctx.lineWidth=1; ctx.stroke(); //console.log("绘制边框") //绘制背景图 if ($bg_img!=""){ctx.drawImage(instances['bg_img'],0,0,canvas_width,canvas_height);} //如果是bing,绘制渐变色 if (bingimage){ var grd = ctx.createLinearGradient(0, 0, 0, 500); grd.addColorStop(0, "rgba(33,33,33, 1)"); grd.addColorStop(1, "transparent"); ctx.fillStyle = grd; ctx.fill(); var grd = ctx.createLinearGradient(0, canvas_height-500, 0, canvas_height-200); grd.addColorStop(0, "transparent"); grd.addColorStop(1, "rgba(255,255,255, 0.8)"); ctx.fillStyle = grd; ctx.fill(); } //绘制logo if ($logo_img!=""){ let thiswidth=instances['logo_imgw']; let thisheight=instances['logo_imgh']; let thisbili=thiswidth/thisheight;//宽高比例 //console.log("w:"+thiswidth+"h:"+thisheight); let toheight=60 //准备压缩到最大高度 let towidth=toheight*thisbili; // ctx.drawImage(instances['logo_img'],bianjie-20,bianjie,towidth,toheight); } //绘制日期 ctx.beginPath(); ctx.rect(canvas_width-bianjie-100, bianjie, 100, 80); ctx.fillStyle ="rgb(66,66,66,0.5)"; ctx.fill(); ctx.closePath(); ctx.beginPath(); ctx.rect(canvas_width-bianjie-100, bianjie+60, 100, 20); ctx.fillStyle ="#ffcd32"; ctx.fill(); ctx.closePath(); ctx.fillStyle = "#FFFFFF"; ctx.font = "bold 60px Microsoft Yahei"; ctx.textAlign = "left"; ctx.fillText(datedata.day, canvas_width-bianjie-90, bianjie+54); ctx.fillStyle = "#333333"; ctx.font = "normal 16px Microsoft Yahei"; ctx.textAlign = "left"; ctx.fillText(datedata.year+"年"+datedata.month+"月", canvas_width-bianjie-95, bianjie+75); ctx.fillStyle = "#FFFFFF"; ctx.font = "normal 12px Microsoft Yahei"; ctx.textAlign = "left"; ctx.fillText(datedata.nongli+" "+datedata.week, canvas_width-bianjie-100, bianjie+95,100); //绘制主图 var title_top = canvas_height-bianjie-180; //定义标题距顶部的高度 if ($goods_img!=""){ //计算原始图片的宽高比 let thiswidth=instances['goods_imgw']; let thisheight=instances['goods_imgh']; let thisbili=thisheight/thiswidth;//宽高比例 //console.log("w:"+thiswidth+"h:"+thisheight); let towidth=canvas_width-bianjie; //准备压缩到最大宽度 let toheight= towidth*thisbili; //宽高比例 //title_top=bianjie+110+toheight; //把标题的高度移至图片下 //console.log("标题位置1:"+title_top); //如果高度超出正方形,则高度等于宽度,并且,将标题的高度定义到跟二维码视觉持平 if (toheight>=towidth){toheight=towidth;title_top=canvas_height-bianjie-170;} let goodsimg_top=bianjie+110+towidth-toheight; if (toheight'; document.querySelector("#pageqrcode").appendChild(instances['qrcode']); let clonenode=document.getElementById("pageqrcode").cloneNode(true); //console.log(clonenode.lastChild); document.querySelector(".pageqrcode").appendChild(clonenode.lastChild); }catch(e){} }) //}