最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

js与canvas合成图片做出微信公众号海报功能

来源:动视网 责编:小采 时间:2020-11-27 19:59:33
文档

js与canvas合成图片做出微信公众号海报功能

js与canvas合成图片做出微信公众号海报功能:这次给大家带来js与canvas合成图片做出微信公众号海报功能,js与canvas合成图片做出微信公众号海报功能的注意事项有哪些,下面就是实战案例,一起来看一下。在微信公众号开发中,很多时候都有个需求是一张图加上头像和昵称或者其他数据生成自己的二维码海报或
推荐度:
导读js与canvas合成图片做出微信公众号海报功能:这次给大家带来js与canvas合成图片做出微信公众号海报功能,js与canvas合成图片做出微信公众号海报功能的注意事项有哪些,下面就是实战案例,一起来看一下。在微信公众号开发中,很多时候都有个需求是一张图加上头像和昵称或者其他数据生成自己的二维码海报或
 这次给大家带来js与canvas合成图片做出微信公众号海报功能,js与canvas合成图片做出微信公众号海报功能的注意事项有哪些,下面就是实战案例,一起来看一下。

在微信公众号开发中,很多时候都有个需求是一张图加上头像和昵称或者其他数据生成自己的二维码海报或者是生成分享海报

这个需求,php的gd库是可以实现的,但是用服务器进行图片合成,会消耗服务器大量的资源

所以我们可以考虑用以下方式实现

一:js的canvas图片合成方法

 $(function () {
 draw(function () {//生成之后的回调
 $('#img')[0].innerHTML='<img src="'+base[0]+'">';//将base生成图片
 });
 });
 var data=[图片1地址,图片2地址,图片3地址];
 base=[];//用于保存生成之后的base
 function draw(fn) {
 var img1= new Image;
 img1.src = data[0];
 img1.onload = function () {//这步必须,因为图片加载是异步的,必须等图片加载完成才开始下面的这些步骤
 var c = document.createElement('canvas'),
 ctx = c.getContext('2d');
 c.width = img1.naturalWidth;
 c.height = img1.naturalHeight;
 ctx.rect(0, 0, c.width, c.height);
 ctx.fillStyle = '#fff';
 ctx.fill();
 //生成一张图片1的底图
 
 /*下面是为底图增加上文字*/
 ctx.drawImage(img1, 0, 0, c.width, c.height);(绘制图片资源,x坐标,y坐标,宽,高)
 //设置字体样式
 ctx.font = "24px Courier New";
 //设置字体填充颜色
 ctx.fillStyle = "write";
 //从坐标点(92,800)开始绘制文字
 ctx.fillText("这是文字内容", 92, 800);
 /*上面是增加文字,可以无限加*/
 
 
 var img2= new Image;
 img2.src = data[1];
 img2.onload = function () {//同理,如果是加载图片的话,需要等图片加载出来再下一步,所以要加onload
 ctx.drawImage(img2, 245, 660, 150, 150);(绘制图片资源,x坐标,y坐标,宽,高)
 base.push(c.toDataURL("image/jpeg", 1));//如果绘制完成了,就把base数据填进数组,然后回调,没完成则继续这步
 fn();//回调
 };
 };
 }
 ///如果是坐标相同,或者觉得代码这样不美观的,可以使用递归方法实现onload的步骤,例如:
 
 function draw(fn) {
 
 a(0);
 
 fn();
 }
 
 function a(i){ 
 if (i == 0) {
 var img1= new Image;
 img1.src = data[0];
 img1.onload = function () {
 var c = document.createElement('canvas'),
 ctx = c.getContext('2d');
 c.width = img1.naturalWidth;
 c.height = img1.naturalHeight;
 ctx.rect(0, 0, c.width, c.height);
 ctx.fillStyle = '#fff';
 ctx.fill();
 //生成一张图片1的底图
 
 /*下面是为底图增加上文字*/
 ctx.drawImage(img1, 0, 0, c.width, c.height);(绘制图片资源,x坐标,y坐标,宽,高)
 //设置字体样式
 ctx.font = "24px Courier New";
 //设置字体填充颜色
 ctx.fillStyle = "write";
 //从坐标点(92,800)开始绘制文字
 ctx.fillText("这是文字内容", 92, 800);
 /*上面是增加文字,可以无限加*/
 a(1);//到第2个步骤
 }
 } else if (i == 1) {
 var img2= new Image;
 img2.src = data[1];
 img2.onload = function () {//同理,如果是加载图片的话,需要等图片加载出来再下一步,所以要加onload
 ctx.drawImage(img2, 245, 660, 150, 150);(绘制图片资源,x坐标,y坐标,宽,高)
 base.push(c.toDataURL("image/jpeg", 1));//如果绘制完成了,就把base数据填进数组,然后回调,没完成则a(2)到第三步;
 return;
 };
 } 
 }

二:使用html2canvas进行网页保存成图片//需引入html2canvas.js

<div class="qrcodepic">
 <img src="图片1" class="qrbg">
 <img src="图片2" class="qrcode" />
 <span class="niname"><img src="图片3" class="touxiang" />文字</span>
 <div class="qrcodemain"></div>
</div>
//使用css进行网页布局
$(window).load(function(){
 var shareContent = $(".qrbg")[0]; 
 var width = shareContent.offsetWidth; 
 var height = shareContent.offsetHeight;
 $(".qrcodepic").height(height);
 var canvas = document.createElement("canvas"); 
 var scale = 2; 
 canvas.width = width * scale; 
 canvas.height = height * scale; 
 canvas.getContext("2d").scale(scale, scale); 
 var rect = shareContent.getBoundingClientRect();
 canvas.getContext("2d").translate(-rect.left,-rect.top);
 var opts = {
 scale: scale, 
 canvas: canvas, 
 width: width, 
 height: height,
 useCORS:true
 };
 html2canvas($(".qrcodepic"), opts).then(function (canvas) {
 dataURL =canvas.toDataURL("image/png");
 $(".qrcodemain").html("<img src='"+dataURL+"' style='display:block; width:100%;' />");
 });
});

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

推荐阅读:

用JQ怎么实现右键点击收藏网页

jQuery必须掌握的API

怎样实现文件上传带进度条动画

jQuery实现多层验证后的表单验证

文档

js与canvas合成图片做出微信公众号海报功能

js与canvas合成图片做出微信公众号海报功能:这次给大家带来js与canvas合成图片做出微信公众号海报功能,js与canvas合成图片做出微信公众号海报功能的注意事项有哪些,下面就是实战案例,一起来看一下。在微信公众号开发中,很多时候都有个需求是一张图加上头像和昵称或者其他数据生成自己的二维码海报或
推荐度:
标签: 微信 图片 生成
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top