如何使用node.js捕获正在运行的计算机主机的桌面屏幕

Posted

技术标签:

【中文标题】如何使用node.js捕获正在运行的计算机主机的桌面屏幕【英文标题】:How to capture desktop screen of computer host where it's running on using node.js 【发布时间】:2014-01-02 13:20:03 【问题描述】:

有没有办法用node.js而不是浏览器标签来捕获桌面?

我搜索了很多,但没有找到。

我想要的是使用 node.js 来构建桌面应用程序。

【问题讨论】:

我知道该节点专门用于 Web,但它也可用于构建控制台应用程序 是的,但是控制台应用程序与 GUI 无关,您将无法使用服务端编程语言创建适当的 GUI 桌面应用程序。 我不是在找GUI,桌面应用可以有GUI也可以没有,控制台就够了 如果你在 Windows 上,你可以使用这个:***.com/a/69063244/2441655 【参考方案1】:

也许你应该把你的问题改写如下:

如何根据 http 客户端的请求捕获正在运行的计算机主机的桌面屏幕并将图像作为响应发送回

如果这就是你真正的意思,你可以write your own add-on module 使用本机编译器。如需参考,请参阅this post)。

【讨论】:

【参考方案2】:

你为什么不直接调用一个外部程序?

例如,你可以调用 import:

$ import -window root screenshot.png

代码:

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

【讨论】:

如何保存截图.png 你用linux吗?你有安装imagemagick吗?如果没有,请通过您喜欢的程序更改“导入”以截取屏幕截图。 您可以为 windows 安装 imagemagick。 imagemagick.org/script/binary-releases.php#windows 然后就可以使用导入命令了。也许命令参数不同,请阅读文档。 我连接了显示器 1,显示器 2。当我用来截屏时,我怎么知道是从监视器 1 和 2 截屏还是只从监视器 2 截屏还是只从监视器 1 截屏?【参考方案3】:

你可以使用

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

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

制作当前用户运行 nodejs 应用程序的屏幕截图。 像这样(这是完整的 expressJS 示例):

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);

但这是相当缓慢的方法。

【讨论】:

请展示如何进行实时快速处理,并使其可供 VLC 或 Google chrome 重新捕获。 这可能很不重要 - 它需要 ffmpeg 生成实时提要和 icecast 服务器进行广播 - 最好在单独的问题中提出【参考方案4】:

对于新人,

有一个名为 desktop-screenshot 的 npm 包用于完全相同的目的。

Here是

您可以找到截取屏幕截图并将其保存到任何用户定义的路径的插件。用户还可以指定截取屏幕截图的时间间隔。 Here

【讨论】:

【参考方案5】:

全分辨率

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

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

调整为 400px 宽,保持纵横比

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");
);

调整大小为 400x300,设置 JPG 质量为 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");
);

【讨论】:

如何指定我要保存截图的文件夹

以上是关于如何使用node.js捕获正在运行的计算机主机的桌面屏幕的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 JavaScript 和 Node.js 将捕获的图像存储到 MySQL 数据库中

node.js 服务器无需请求即可获取主机名

如何在共享主机中托管 Node.Js 应用程序 [关闭]

如何在本地主机(任何端口)上运行 html 文件

管理正在运行的 yarn node.js localhost 端口?

在 Node.js 中连接到多个 MySQL 数据库