跳到主要内容

Canvas 截图——使用 JavaScript 将 HTML5 Canvas 导出为图像

要使用 Konva 截取 Canvas 并将其导出为图像,请使用 toDataURL() 方法。此方法用于 Stage 时需要回调函数,其他节点不需要回调函数。 你可以传入 image/jpeg 等 MIME 类型和 0 到 1 之间的质量值。 还可以截取特定节点,包括图层、组和图形。

注意:toDataURL() 方法要求 Canvas 上绘制的所有图像 与执行代码托管在同一域名下的 Web 服务器上。 如果不满足此条件,将引发 SECURITY_ERR 异常。

**操作说明:**拖放矩形,然后单击保存按钮以获取合成数据 URL,并在新窗口中打开生成的图像。

import Konva from 'konva';

const stage = new Konva.Stage({
  container: 'container',
  width: 400,
  height: 400
});

const layer = new Konva.Layer();
stage.add(layer);

// create draggable rectangle
const rect = new Konva.Rect({
  x: 100,
  y: 100,
  width: 100,
  height: 100,
  fill: 'red',
  stroke: 'black',
  strokeWidth: 4,
  draggable: true
});

layer.add(rect);

// add button
const button = document.createElement('button');
button.textContent = 'Save as Image';
document.body.appendChild(button);

button.addEventListener('click', () => {
  // get data URL with default settings
  const dataURL = stage.toDataURL();
  
  // open in new window
  const win = window.open();
  win.document.write(`<img src="${dataURL}" alt="Stage"/>`);
  
  // you can also save with different settings
  const jpegURL = stage.toDataURL({
    mimeType: 'image/jpeg',
    quality: 0.8
  });
  console.log('JPEG URL:', jpegURL);
});