本文摘自PHP中文网,作者墨辰?R,侵删。
本篇文章主要介绍如何用html创建canvas画布生成图片,感兴趣的朋友参考下,希望对大家有所帮助。
1,在html里新建canvas画布
1 2 3 4 5 6 7 8 9 10 11 | /**要生成图片的html*/< p class = "con_1" >
< p class = "con_1_5" >
< span class = "title_des2" >思路惊奇</ span >
< span class = "title_des3" >思路惊奇</ span >
</ p >
< img class = "con_1_1" src = "style/ActiveCDN/bonus/page7_1.png" alt = "" >
< img class = "con_1_2" src = "style/ActiveCDN/bonus/page7_1.png" alt = "" >
</ p >/*生成的canvas和最终生成的图片*/< p class = "shareImg" >
< canvas id = "canvas" width = "750" height = "1206" ></ canvas >
< img src = "" alt = "" >
</ p >
|
1 2 3 4 5 6 7 8 9 10 11 | //设置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.fillStyle="#0c3e78";
this.ctx.fillRect(0,0,this.canvas.width,this.canvas.height);
}
}
|
2,将要生成的图片的dom元素载入canvas中,
一般我们想生成图片的时候,dom元素基本上由图片和文字组成,想一些效果之类的是不适合生成图片的。
a, 获取要加载到canvas的图片
1 2 3 4 5 6 7 8 9 | domArray:[$(".con_1_1"),$(".con_1_2")],//要加载的图片元素列表
imgArrayLoad:function(){
var that=this,domArray=this.domArray; for(var i=0,len=domArray.length;i<len;i++){
(function(){
//循环出所有图片元素,一个个图片添加
that.addImgToCanvas(domArray[i],that.imgAllLoad);
}())
}
},
|
b,获取每个图片元素的在页面上大小,距离顶部地步距离,然后绘制到canvas相应的位置
这里图片大小和距离也是取得2倍,原因是解决生成的图片不清晰。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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中,
同把图片插入到canvas类似,首先需要获取文字元素,确定文字在网页中上下左右的位置,之后插入到相应的canvas里。
阅读剩余部分
相关阅读 >>
html如何移除元素
在html中怎样可以用超链接打开新窗口并且控制窗口属性
html5 canvas基本绘图之绘制线条
html var标签怎么用
html如何插入图片
图文详解html中有序列表、无序列表和自定义列表的区别
html怎么添加图片
html怎么注释单行
html中title啥意思
html表格边框颜色怎么设置
更多相关阅读请进入《canvas》频道 >>
人民邮电出版社
本书对 Vue.js 3 技术细节的分析非常可靠,对于需要深入理解 Vue.js 3 的用户会有很大的帮助。——尤雨溪,Vue.js作者
转载请注明出处:木庄网络博客 » 用html创建canvas画布生成图片