使用html2canvas生成海报及采坑纪录

3 篇文章 0 订阅
2 篇文章 0 订阅

使用场景:

根据产品信息生成海报图,供分享和分销使用。

代码:

首先要加载html2canvas的js文件。(需要前往官网下载)

<script>
    var canvas = document.createElement("canvas"); //创建一个canvas节点
    var scale = 3; //定义任意放大倍数 支持小数
    var type = "png";//生成图片样式
    var width = 360; //获取需要生成海报dom的宽度,为了测试,给的定值
    var height = 1750; //获取需要生成海报dom的高度,为了测试,给的定值
    canvas.width = width * scale; //定义canvas 宽度 * 缩放
    canvas.height = height * scale; //定义canvas高度 *缩放
    canvas.getContext("2d").scale(scale,scale); //获取context,设置scale
    html2canvas(document.getElementById('share_img_con'), {//这里的share_img_con就是海报的内容
         tainttest:true, //检测每张图片都已经加载完成
         useCORS: true, // 【重要】开启跨域配置
         canvas: canvas,
         onrendered: function(canvas) {
             $("#share_img_con").hide();//隐藏海报内容div
             $("#share_img_img").html('');//海报展示
             $("#share_img_img").append(Canvas2Image.convertToImage(canvas, canvas.width, canvas.height, type));//生成海报并添加到页面
             $("#share_img_img img").css("width", "100%");//设置海报展示样式
          }
     });
</script>

采坑纪录:

1.跨域问题:因为公司图片存储和调用是用阿里云的OSS,在生成海报的时候会报跨域的错。

解决:

1.在图片添加属性 crossorigin="anonymous"。

2.修改服务器Nginx配置,添加

add_header 'Access-Control-Allow-Origin' $core_orgin;//$core_orgin就是图片服务器的域名,不考虑安全问题的话可以设置为*
add_header 'Access-Control-Allow-Credentials' 'true' always;
add_header 'Access-Control-Allow-Methods' 'POST, GET, OPTIONS,DELETE,PUT';

另外图片服务器也要修改配置,在Nginx配置添加相应的允许访问的代码,同上。

3.阿里云OSS或者其他云盘存储需要在OSS配置允许访问的域名。下边是阿里云OSS的配置:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值