highcharts本地导出图片

调用:
this.handleMenuClick('png','.chart-plate-card-body')"
this.handleMenuClick('jpg','.chart-plate-card-body')"
方法:
getChartSVG (val) { // 获取charts的svg
  return this.chart.getSVG(val)
},
// parClass为包裹charts的结构类名
downloadImg (type, parClass) {
  // 获取highcharts的svg图片
  const img = new Image()
  let target
  let svg
  // 将svg转化为canvas
  const canvas = document.createElement('canvas')
  const context = canvas.getContext('2d')
  if (parClass === 'default') {
  // 如果传入则会下载自定义尺寸的大小
    img.src = `data:image/svg+xml;base64,${btoa(unescape(encodeURIComponent(this.getChartSVG({ chart: { width: 1920, height: 838 } }))))} `
    canvas.width = 1920
    canvas.height = 838
  } else {
  // 不传入默认下载当前chart在dom上显示的大小
    img.src = `data:image/svg+xml;base64,${btoa(unescape(encodeURIComponent(this.getChartSVG({ chart: { width: this.chart.chartWidth, height: this.chart.chartHeight } }))))} `
    canvas.width = this.chart.chartWidth
    canvas.height = this.chart.chartHeight
  }
  const _this = this
  img.onload = function () {
    // svg图加载完毕后绘制到canvas上
    context.drawImage(img, 0, 0)
    // 将canvas转化为png图片
    const imgEle = new Image()
    const url = canvas.toDataURL(`image/${type}`)
    imgEle.src = url
    imgEle.onload = function () {
      const a = document.createElement('a')
      a.href = url
      a.download = _this.chartTitle || _this.downloadTitle
      // 触发a链接点击事件,浏览器开始下载文件
      document.body.appendChild(a)
      a.click()
      document.body.removeChild(a)
    }
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值