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

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

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

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

【问题讨论】:

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

标签: node.js screenshot capture screen-capture


【解决方案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");
      });
      

      【讨论】:

      • 如何指定我要保存截图的文件夹
      猜你喜欢
      • 2011-01-15
      • 1970-01-01
      • 2011-10-12
      • 2019-06-18
      • 2011-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多