JS:SVG转图片的完美方法

因为项目的原因,在web端svg需要转成图片进行输出.其中svg里面涉及到图片的跨域,字体显示,特殊标签。生成方式想当复杂。总结下来,分为前端生成,后调api后端生成。我标题能加上完美,是因为我尝试了几乎google 的各种实现方式。

需求

  • 含有svg的网页转图片,俗称截屏。
  • Chart图转图片,比如highchart
  • Svg在线设计网站生成图片

Demo

html

下面我们就生成这个svg的图片

       `
       <style>
           @font-face{
           font-family: huxiaobo-gdh;
           src: url(http://xxxx/huxiaobo-gdh.woff) format('woff');
       }
       </style>
          <div class="preview">
            <svg>
                <foreignObject>
                    <div class="font-family:huxiaobo-gdh"></div>
                </foreignObject>
            </svg>
        </div>`

科普一下image生成base64, img.crossOrigin = 'Anonymous';这句话加上可跨域。当然图片本身最好设置了跨域。

          let canvas = document.createElement('canvas');
                let img = new Image()
                img.crossOrigin = 'Anonymous';
                let ctx = canvas.getContext('2d');
                img.src = src;
                img.onload = function () {
                    canvas.width = img.width;
                    canvas.height = img.height;
                    ctx.drawImage(img, 0, 0);
           
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值