【问题标题】:How can I open data:image in browser from node-webkit app?如何从 node-webkit 应用程序在浏览器中打开数据:图像?
【发布时间】:2015-01-08 00:12:24
【问题描述】:

我正在使用 Node-Webkit 制作图像增强应用程序。我有一个下载按钮,点击它会执行以下操作。

        document.getElementById("download").onclick = function(){
            var c = Caman("canvas");
            if(file.type.replace("image/","")=="jpeg"){
                //save as jpeg
                c.save('jpeg');
            } else {
                //saves as png by default
                c.save();
            }   
        }
    }

如果在浏览器中运行,此功能应该下载图像,但在 Node-Webkit 应用程序中无法下载。

所以,我想让它能够在默认浏览器中打开 data:image 以便我可以从浏览器中保存图像,但我不知道该怎么做。谁能帮我解决这个问题?

谢谢。

【问题讨论】:

  • 您可以尝试使用 toDataURL 之类的东西并使用 nwgui.Shell 打开它,但我不确定。

标签: javascript node.js macos webkit node-webkit


【解决方案1】:

Node-Webkit 支持 node.js filesystem API 。所以你可以使用fs.writeFile方法来保存文件。
或者您可以查看node-webkit-fdialogs,它应该会为您简化任务。

当你想使用节点库时,你只需要在你的 javascript 中require 它就像在 node.js 中一样。看例子:

var fs = require("fs");
$('#saveButton').click(function() {
    var canvasImage = canvas.toDataURL("image/png").split(',')[1];
    var decodedImg = window.atob(canvasImage);
    var img = new Buffer(decodedImg, encoding='base64');

    fs.writeFile("output.png", img, function(err) {
        if(err) {
            console.log(err);
        } else {
            console.log("The file was saved!");
        }
    });
});

【讨论】:

  • 我猜这个方法会保存一个文件,但我想让它工作而不必保存图像。
【解决方案2】:

您可以使用canvas-to-image,它适用于 node-webkit 和浏览器。

【讨论】:

    猜你喜欢
    • 2013-10-10
    • 2021-06-26
    • 2011-03-20
    • 2014-05-29
    • 2014-01-24
    • 2014-12-16
    • 2015-08-28
    • 1970-01-01
    • 2014-09-13
    相关资源
    最近更新 更多