Thanks to visit codestin.com
Credit goes to github.com

Skip to content

[Bug]: 设置背景颜色,但不能导出。用drawImage进行拷贝之后导出,导出无法显示拓补的图像数据 #7425

@idiot22

Description

@idiot22

Describe the bug / 问题描述

拓补展示的
Image
实际导出的

Image

Reproduction link / 复现链接

No response

Steps to Reproduce the Bug or Issue / 重现步骤

  1. 随便选取一个示例加上
    plugins: [ { type: 'background', background: 'red' } ]

  2. 导出
    const a = document.createElement('a') const graphDataUrl = await this.graph.toDataURL({ mode: 'overall' }) a.href = graphDataUrl a.download = 'graph.jpg' a.click()
    会发现没有背景

  3. 将dataUrl放在img加载,然后绘制在canvas,内容绘制不出
    `
    // 将DataURL转换为Canvas并添加背景颜色
    function dataURLToCanvas(dataURL, backgroundColor = '#f0f2f5') {
    return new Promise((resolve, reject) => {
    // 创建Image对象
    const img = new Image();

    // 设置图片加载完成后的回调
    img.onload = function() {
    // 创建Canvas元素
    const canvas = document.createElement('canvas');
    const ctx = canvas.getContext('2d');

    // 设置Canvas尺寸与图片相同
    canvas.width = img.width;
    canvas.height = img.height;

    // 第一步:填充背景颜色
    ctx.fillStyle = backgroundColor;
    ctx.fillRect(0, 0, canvas.width, canvas.height);

    // 第二步:绘制图片(这会覆盖在背景之上)
    ctx.drawImage(img, 0, 0);

    // 返回Canvas元素
    resolve(canvas);
    };

    // 设置图片加载失败的回调
    img.onerror = function() {
    reject(new Error('Failed to load image from DataURL'));
    };

    // 将DataURL设置为图片源
    img.src = dataURL;
    });
    }

// 使用示例
async function convertAndAddBackground() {
try {
// 假设 dataURL 是你已有的DataURL
const canvas = await dataURLToCanvas(dataURL, '#f0f2f5');

// 现在你可以使用这个Canvas做进一步操作
// 例如转换为其他格式或直接显示在页面上
document.body.appendChild(canvas);

// 或者转换为Blob进行下载
canvas.toBlob((blob) => {
  const url = URL.createObjectURL(blob);
  const a = document.createElement('a');
  a.href = url;
  a.download = 'image-with-background.png';
  a.click();
  URL.revokeObjectURL(url);
}, 'image/png');

} catch (error) {
console.error('Error:', error);
}
}
`
4. 直接使用drawImage来拷贝拓补的canvas,也是空

Version / 版本

Please select / 请选择

OS / 操作系统

  • macOS
  • Windows
  • Linux
  • Others / 其他

Browser / 浏览器

  • Chrome
  • Edge
  • Firefox
  • Safari (Limited support / 有限支持)
  • IE (Nonsupport / 不支持)
  • Others / 其他

Metadata

Metadata

Assignees

No one assigned

    Labels

    question 💬This issue is just a question. It will be converted into discussion automatically

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions