图表如何导出图片?

731 阅读1分钟

问题标题

请问是否有图表导出图片的api?

问题描述

VChart图表能否直接转成高清度图片保存?是否有相关的api?

解决方案

您有2种方法可以将图表保存成图片:

  1. 在图表上直接右键保存或复制

  1. 如果您需要在软件项目中获取图片,我们针对不同代码环境有不同的接口

getDataURL


异步方法返回一个包含图片展示的 data URI。

getDataURL: () => Promise<any>;

exportImg


异步方法 导出图表图片,只支持浏览器端,同时参数 name 可以为图片进行命名。

/**
 * **异步方法** 导出图表图片,只支持浏览器端。
 * @param name 保存的图片名称
 * @returns
 */
exportImg: (name?: string) => Promise<void>;

exportCanvas


导出绘制有图表内容的 canvas ,只支持浏览器端。可以使用这个 canvas 进行二次处理,比如添加水印等。

/**
 * 导出绘制了图表内容的 canvas
 * @returns HTMLCanvasElement
 * @since 1.5.2
 */
exportCanvas: () => HTMLCanvasElement | undefined;

getImageBuffer


目前仅支持 node 环境,用于 node 端的图片导出。

 getImageBuffer: () => void;

详情可见: www.visactor.io/vchart/api/…

代码示例

const spec = {
  type: 'line',
  data: {
    values: [
      {
        time: '2:00',
        value: 8
      },
      {
        time: '4:00',
        value: 9
      },
      {
        time: '6:00',
        value: 11
      },
      {
        time: '8:00',
        value: 14
      },
      {
        time: '10:00',
        value: 16
      },
      {
        time: '12:00',
        value: 17
      },
      {
        time: '14:00',
        value: 17
      },
      {
        time: '16:00',
        value: 16
      },
      {
        time: '18:00',
        value: 15
      }
    ]
  },
  xField: 'time',
  yField: 'value'
};

const vchart = new VChart(spec, { dom: CONTAINER_ID });
vchart.renderSync();

// 等待动画执行之后或关闭动画后, exportImg
setTimeout(() => {
  vchart.exportImg('vchart')
}, 1000)

// Just for the convenience of console debugging, DO NOT COPY!
window['vchart'] = vchart;

结果展示

在线效果参考:codesandbox.io/p/sandbox/e…


相关文档

相关api:www.visactor.io/vchart/api/… github:github.com/VisActor/VC…