Node.js 从节点webkit中的网络摄像头捕获后写入png不工作

Node.js 从节点webkit中的网络摄像头捕获后写入png不工作,node.js,filesystems,html5-canvas,node-webkit,hard-drive,Node.js,Filesystems,Html5 Canvas,Node Webkit,Hard Drive,我使用以下代码在html5中拍摄快照 window.takeSnapshot = function(){ $("body").append("<canvas id='dummyCanvas' class='canvas' style='display: none'></canvas>"); var canvas = document.getElementById("dummyCanvas"); canvas.width = videoWi

我使用以下代码在html5中拍摄快照

    window.takeSnapshot = function(){
    $("body").append("<canvas id='dummyCanvas' class='canvas' style='display: none'></canvas>");
    var canvas = document.getElementById("dummyCanvas");

    canvas.width = videoWidth;
    canvas.height = videoHeight;

    var context = canvas.getContext("2d");
    var type = mediaType;
    var tp = tupple;

    context.drawImage(videoElement, 0, 0, videoWidth, videoHeight);

    var contents = canvas.toDataURL('image/png');
    var dt = new Date();
    Message.showProgress();
    var time = dt.getHours() + "_" + dt.getMinutes() + "_" + dt.getSeconds();
    var file = {name: "Snapshot_" + time + ".png", contents: contents, recorded: true};
    var id = "attachment_" + window.Guid();
    var icon = (type==ContentTypes.Video)?("video.png"):((type==ContentTypes.Audio)?"audio.png":"image.png");
    $("#attachments").append("<tr id='"+id+"'><td align='right'><img src='assets/images/progress.gif' style='width:16px'/></td><td><img src='assets/images/" + icon + "' style='width: 14px;' /></td><td style='font-size: 8pt; font-family: Arial; font-weight: bold;' style='text-decoration:none; color: #000000'>"+file.name+"</td></tr>");
    Logger.log("Uploading " + file.name + " ...", LogTypes.INFO);
    $("#mediaPanel").remove();
    $("#attachmentPopup").show();
    window.stream.stop();

    var callback = function(){
        Logger.log("Upload completed for " + file.name + " !", LogTypes.INFO);
        CWDocumentWriter.addAttachment(tp, file.name, type);
        $("#"+id).find('td').eq(0).html("<a href='javascript:void(0)' title='Delete attachment' onclick='window.deleteAttachment(["+tp[0]+","+tp[1]+","+tp[2]+","+tp[3]+"],\""+file.name+"\", event)'><img src='assets/images/delete.png' style='width:16px'/></a>");
        $("#"+id).find('td').eq(2).html("<a href='javascript:void(0)' title='"+file.name+"' onclick='window.showContent(\"" + file.name + "\", " + type + ")'>"+file.name+"</a>");
        Message.hideProgress();

    };

    if(Cloud.isLive())
        Cloud.writeFile(file, contents, callback);
    else{


        var canvasImage = canvas.toDataURL("image/png").split(',')[1];
        var decodedImg = window.atob(canvasImage);      
        var img = new Buffer(decodedImg, encoding='base64');

        file.contents = img;
        StorageManager.writeImageFile(file, contents, callback);
    }
};

我尝试了几种方法,但似乎效果不太好。映像文件已写入硬盘,但已损坏。请帮我解决这个问题。

我相信这会解决您的问题:

    var imgData = canvas.toDataURL('image/png');
    var data = imgData.replace(/^data:image\/\w+;base64,/, "");
    var buf = new Buffer(data, 'base64');
    var whereToSave = "C:\pathToSave"; // edit this        

    fs.writeFile(whereToSave, buf);

你最终是如何解决这个问题的?我无法在节点webkit中保存PNG/JPG图像。我尝试了几个堆栈溢出的例子,但没有一个主题是有效的。我没有主意了。
    var imgData = canvas.toDataURL('image/png');
    var data = imgData.replace(/^data:image\/\w+;base64,/, "");
    var buf = new Buffer(data, 'base64');
    var whereToSave = "C:\pathToSave"; // edit this        

    fs.writeFile(whereToSave, buf);