【问题标题】:Save a canvas as an image on Electron在 Electron 上将画布另存为图像
【发布时间】:2021-09-11 05:30:06
【问题描述】:

我目前的设置:

  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,但它们也不起作用。

【问题讨论】:

  • 控制台有错误吗?
  • 您可以尝试在传递给writeFile 的回调中添加一些console.log,在if (err) throw err 之后,以确保此异步操作已完成。
  • 控制台没有错误,writeFile回调中已经有if (err) throw err;了。

标签: javascript electron fs


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-20
    • 2017-04-26
    • 2016-08-28
    • 2017-12-26
    • 1970-01-01
    • 2017-12-25
    • 2019-10-19
    相关资源
    最近更新 更多