国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > HTML > 正文

如何將html轉化為圖片

2020-03-24 18:52:28
字體:
來源:轉載
供稿:網友
在我們做h5頁面或者推廣小程序的時候,特別是在微信里,為了讓用戶更好的分享給朋友,往往需要將動態生成的html生成一個圖片,然后讓用戶長按保存發給朋友或者朋友圈。

1,在html里新建canvas畫布

/**要生成圖片的html*/ p >
//設置canva畫布大小,這里會把畫布大小設置為2倍,為了解決生成圖片不清晰的問題,需要注意接下來所有的函數都是在html2canvas這個對象里定義的var html2canvas={ canvas:document.getElementById( canvas ), ctx:canvas.getContext( 2d ), saveImage:function(){ this.canvas.width=windowPro.innerWidth*2; this.canvas.height=windowPro.innerHeight*2-4.8*bastFontSize; this.ctx.fill >

2,將要生成的圖片的dom元素載入canvas中

a, 獲取要加載到canvas的圖片

domArray:[$( .con_1_1 ),$( .con_1_2 )],//要加載的圖片元素列表 imgArrayLoad:function(){ var that=this,domArray=this.domArray; for(var i=0,len=domArray.length;i i++){ (function(){ //循環出所有圖片元素,一個個圖片添加 that.addImgToCanvas(domArray[i],that.imgAllLoad); }()) },

b,獲取每個圖片元素的在頁面上大小,距離頂部地步距離,然后繪制到canvas相應的位置

 addImgToCanvas:function(obj,fn){ var width=obj.width()*2,//圖片在網頁寬度 height=obj.height()*2,//圖片在網頁高度 x=obj[0].x*2,//圖片距離網頁最頂部距離 y=obj[0].y*2,//圖片距離網頁最右邊距離 img=new Image(), that=this, src=obj.attr( src  img.src=src; img.onload=function(){ //把圖片繪制到canvas上 that.ctx.drawImage(obj[0],x,y,width,height);上 that.loadImgNum++; if(fn typeof fn === function )fn(that.loadImgNum); /**位置1**/ },

3,將要生成的文字的dom元素載入canvas中

a, 獲取要加載文字元素

 textObj:[$( .title_des2 ),$( .title_des3 )], textArratLoad:function(){ var that=this; for(var m=0,len=that.textObj.length;m m++){ (function(){ that.writeTextOnCanvas(domArray[m],parseInt(28)+ px 微軟雅黑 , #d0b150 ) })() },

b,獲取每個文字元素距離網頁距離,同樣的,距離距離長度必須喂2倍,把文字添加到canvas上

 writeTextOnCanvas:function(obj,fontsize,color){//添加文字到canvas var width=obj.width()*2, height=obj.height()*2, x=obj.offset().left*2, y=obj.offset().top*2; var that=this; var text=obj.html().replace(/^/s+|/s+$/, //去掉文字里的空格 that.ctx.fillStyle =color; //設置文字顏色 that.ctx.font = fontsize;//設置文字大小 that.ctx.textAlign= left //設置文字對其方向 textBaseline = middle  //因為canvas里的文字不會換行,所以我們需要想辦法讓長段文字換行 for(var i = 1; that.getTrueLength(text) i++){ var tl = that.cutString(text, 30); that.ctx.fillText(text.substr(0, tl), x, y+36*i);// 把文字添加到canvas上 text = text.substr(tl); },

c,文字繪制到canvas時,自動換行。。因為canvas繪制文字的時候只能設置最大寬度和距離頂部左邊距離。所以我們需要自行處理下。

getTrueLength:function(str){//獲取字符串的真實長度(字節長度) var len = str.length, truelen = 0; for(var x = 0; x len; x++){ if(str.charCodeAt(x) 128){ truelen += 2; }else{ truelen += 1; } return truelen; cutString:function(str, leng){//按字節長度截取字符串,返回substr截取位置 var len = str.length, tlen = len, nlen = 0; for(var x = 0; x len; x++){ if(str.charCodeAt(x) 128){ if(nlen + 2 leng){ nlen += 2; }else{ tlen = x; break; }else{ if(nlen + 1 leng){ nlen += 1; }else{ tlen = x; break; } return tlen; }

4,最后把canvas轉為圖片,需要注意的是必須等所有圖片都載入完成才能進行圖片的生成,要不然會造成生成的圖片不全。文字載入可以不考慮。

 imgAllLoad:function(nexi){ var length=this.domArray.length; if(nexi =length){ var dataURL = canvas.toDataURL(); $( .shareImg img ).attr( src ,dataURL);//canvas轉為圖片 }

總結:

1.獲取圖片和文字位置,通過canvas的ctx.drawImage(IMG,left,top,width,height)繪制圖片,通過.ctx.fillText(text, left,top)繪制文字,通過canvas.toDataURL();生成圖片。
2.需要注意為了生成圖片不失真,canvas大小是2倍,圖片文字都是2倍。
3.為了文字換行, getTrueLength 。
4.必須等到圖片都繪制完成,再生成圖片,這個很重要。

相關推薦:

html5 - html圖片點擊事件找不到

javascript - html圖片熱區如自適應 map標簽

關于html圖片的問題?

以上就是如何將html轉化為圖片的詳細內容,html教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 漳州市| 玉溪市| 高台县| 额尔古纳市| 察隅县| 开封市| 桓仁| 石首市| 米泉市| 鹤岗市| 信阳市| 庆城县| 扶绥县| 定西市| 昭平县| 萍乡市| 洪江市| 新巴尔虎左旗| 龙南县| 鄱阳县| 略阳县| 建瓯市| 郓城县| 赤城县| 扶绥县| 苍溪县| 九龙县| 南木林县| 虹口区| 昆山市| 涡阳县| 东山县| 新泰市| 赞皇县| 伊宁县| 扶余县| 沂水县| 嘉祥县| 石首市| 扶余县| 灵武市|