2013-12-14 4 views
7

Gibt es eine Möglichkeit, den Desktop mit node.js nicht als Browserregister zu erfassen?Wie wird der Desktopbildschirm des Computerhosts, auf dem er ausgeführt wird, mit node.js erfasst?

Ich habe viel gesucht, aber ich habe keine gefunden.

Ich möchte node.js verwenden, um Desktop-Anwendung zu erstellen.

+0

zu halten weiß ich, dass der Knoten spezialisiert für das Web aber auch könnte es verwendet werden, um Konsolenanwendungen zu bauen – user12cdhbw7

+0

Ja, aber co Nsole-Anwendungen haben nichts mit der GUI zu tun, Sie werden nicht in der Lage sein, geeignete GUI-Desktop-Anwendungen mit einer Serviceside-Programmiersprache zu erstellen. – YesMan85

+0

Ich bin nicht auf der Suche nach einer GUI, Desktop-Anwendungen können eine GUI haben oder nicht, also Konsole ist genug – user12cdhbw7

Antwort

0

Vielleicht sollten Sie Ihre Frage wie folgt neu formulieren:

Wie Desktop-Bildschirm von Computer-Host zu erfassen, wo es läuft ist auf Anfrage http Kunden und das Bild als Antwort zurückschicken

Wenn das, was Sie meinen, Sie können write your own add-on module mit nativen Compiler. Als Referenz siehe this post).

3

Warum rufen Sie nicht einfach ein externes Programm an?

Zum Beispiel könnten Sie rufen Import:

$ import -window root screenshot.png 

Der Code:

var exec = require('child_process').exec; 
exec('import -window root screenshot.png', function (error, stdout, stderr){ 
    // now you have the screenshot 
}); 
+0

wie screenshot.png – user12cdhbw7

+1

zu speichern ist es bereits gespeichert, wenn Sie den Befehl ausführen –

+0

Ich habe es ausprobiert und es gibt nichts gespeichert – user12cdhbw7

7

Sie können

verwenden

http://nodejs.org/api/child_process.html#child_process_child_process_exec_command_options_callback

und

https://en.wikipedia.org/wiki/Scrot

Screenshot des aktuellen Benutzers, der die Anwendung nodejs ausführt. So etwas wie dies (es ist komplett Express.js Beispiel):

var express = require('express'), 
    childProcess = require('child_process'), 
    app = express(); 

app.get('/screenshot.png', function(request,response){ 
    childProcess.exec('scrot screenshot.png', function(err){ 
    if(err1) { 
     response.send(503,'Error creating image!'); 
    } else { 
     response.sendfile('screenshot.png') 
    } 
    }); 
}); 
app.listen(3000); 

Aber das ist ziemlich langsam Ansatz.

+0

Bitte zeigen Sie, wie Sie schnell in Echtzeit arbeiten und es für VLC oder Google Chrome zum erneuten Erfassen verfügbar machen. – YumYumYum

+0

kann es ziemlich untrivial sein - es erfordert ffmpeg für die Generierung von Echtzeit-Feed und Icecast-Server für die Ausstrahlung - besser, es in separaten Frage – vodolaz095

0

Für die Neulinge,

Es gibt ein npm Paket Desktop-Screenshot aufgerufen für genau den gleichen Zweck.

Here es ist

Sie ein Addon finden können, wo der Screenshot genommen und gespeichert wird für jeden Benutzer definiert path.User können auch ein Zeitintervall für die Screenshot-Capture angeben.Here

1

voller Auflösung

var screenshot = require('desktop-screenshot'); 

screenshot("screenshot.png", function(error, complete) { 
    if(error) 
     console.log("Screenshot failed", error); 
    else 
     console.log("Screenshot succeeded"); 
}); 

Resize auf 400px breit, Seitenverhältnis

var screenshot = require('desktop-screenshot'); 

screenshot("screenshot.png", {width: 400}, function(error, complete) { 
    if(error) 
     console.log("Screenshot failed", error); 
    else 
     console.log("Screenshot succeeded"); 
}); 

Resize auf 400x300 setzen JPG Qualität auf 60%

var screenshot = require('desktop-screenshot'); 

screenshot("screenshot.jpg", {width: 400, height: 300, quality: 60}, function(error, complete) { 
    if(error) 
     console.log("Screenshot failed", error); 
    else 
     console.log("Screenshot succeeded"); 
}); 
+0

zu fragen, wie man den Ordner angeben, in dem ich den Screenshot speichern möchte –

Verwandte Themen