首页 > 解决方案 > 在 Electron 上将画布另存为图像

问题描述

我目前的设置:

  1. 将画布转换为 blob。
  2. 向用户询问文件路径。
  3. 将 blob 保存在用户指定的位置。

但是,我无法让第 3 步工作。我目前正在尝试使用 fs 来完成这项工作,但它似乎并没有真正保存文件。

当前代码:

canvas.toBlob(blob => {
    remote.dialog.showSaveDialog({ defaultPath: "file.png" }).then((canceled, filepath) => {
        if (filepath) { // Using filepath because canceled is always true for some reason
            blob.arrayBuffer().then(arrayBuffer => {
                console.log(arrayBuffer);
                fs.writeFile(filepath, Buffer.from(arrayBuffer), err => {
                    if (err) throw err;
                });
            });
        }
    });
}, "image/png");

我的代码有任何缺陷吗?我尝试将 Buffer 更改为 Uint8Array 和 Int8Array,但它们也不起作用。

标签: javascriptelectronfs

解决方案


我通过将 cancelled/filepath 参数更改为一个包含所有这些参数的结果参数来解决问题,结果证明我只是以错误的方式使用 showSaveDialog。


推荐阅读