javascript - 在 Electron 上将画布另存为图像
问题描述
我目前的设置:
- 将画布转换为 blob。
- 向用户询问文件路径。
- 将 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,但它们也不起作用。
解决方案
我通过将 cancelled/filepath 参数更改为一个包含所有这些参数的结果参数来解决问题,结果证明我只是以错误的方式使用 showSaveDialog。