首页 > 其他分享 >RobotJS截取屏幕screen.capture踩坑

RobotJS截取屏幕screen.capture踩坑

时间:2024-04-03 18:24:25浏览次数:28  
标签:capture RobotJS const screenshot screen jimp bmp

RobotJS截取屏幕screen.capture踩坑

 

调用 robot.screen.capture() 或 robot.screen.capture(0,0,1920,1080),返回的Bitmap对象是色彩格式是BGR色彩,这导致了如果未经处理就直接生成图像,色彩会产生错误,只需将BGR色彩转换成RGB色彩即可。

const robot = require('robotjs');
const jimp = require("jimp");

const swapRedAndBlueChannel = bmp => {
    for (let i = 0; i < (bmp.width * bmp.height) * 4; i += 4) { // swap red and blue channel
        [bmp.image[i], bmp.image[i + 2]] = [bmp.image[i + 2], bmp.image[i]]; // red channel;
    }
};

const screenshot = robot.screen.capture();
swapRedAndBlueChannel(screenshot);
const screenJimp = new jimp({ data: screenshot.image, width: screenshot.width, height: screenshot.height });

screenJimp.write('screenshot.png');
JAVASCRIPT 复制 全屏

如果你有使用OpenCV,则可以使用“COLOR_BGR2RGB”函数直接转换

const cv = require('@u4/opencv4nodejs');
const robot = require('robotjs');
const jimp = require("jimp");


const screenshot = robot.screen.capture();
const screenJimp = new jimp({ data: screenshot.image, width: screenshot.width, height: screenshot.height });

screenJimp.getBuffer(jimp.MIME_PNG, function (err, buffer) {
    if (err) {
        return;
    }
    const screen = cv.imdecode(Buffer.from(buffer)).cvtColor(cv.COLOR_BGR2RGB);
    console.log(screen)
});

标签:capture,RobotJS,const,screenshot,screen,jimp,bmp
From: https://www.cnblogs.com/sexintercourse/p/18113305

相关文章

  • 【STM32嵌入式系统设计与开发】——16InputCapture(输入捕获应用)
    这里写目录标题STM32资料包:百度网盘下载链接:链接:https://pan.baidu.com/s/1mWx9Asaipk-2z9HY17wYXQ?pwd=8888提取码:8888一、任务描述二、任务实施1、工程文件夹创建2、函数编辑(1)主函数编辑(2)USART1初始化函数(usart1_init())(3)USART数据发送函数(USART1_Send_Data())(4)USART......
  • Capture One 23:光影魔术师,细节掌控者mac/win版
    CaptureOne23,不仅仅是一款摄影后期处理软件,它更是摄影师们的得力助手和创意伙伴。这款软件凭借其卓越的性能、丰富的功能和前沿的技术,为摄影师们带来了前所未有的影像处理体验。→→↓↓载CaptureOne23mac/win版CaptureOne23以其强大的色彩管理和光影调整能力,让摄影师们......
  • P2887 [USACO07NOV] Sunscreen G
    原题链接题解1.题目可以抽象转化为,若干个点和线段,求问最多有多少点和线段能配对,如果点在线段内2.我们可以采用贪心的方法,对点升序排序,对线段按右端点升序排序为什么请看下图code#include<bits/stdc++.h>usingnamespacestd;structnode{intl,r,chose;}cow[2505]......
  • [开源初探]screenshot-to-code:将截图转化为代码
    介绍说明将截图转化为 HTML 代码的工具。该项目可以将屏幕截图转化为 HTML/JS/TailwindCSS 代码,它使用 GPT-4Vision 生成代码、DALL-E3 生成相似的图片。 安装运行为了方便演示及保持原有系统的简洁,将使用 docker 的方式来安装运行 screenshot-to-code。由于项......
  • BOM:window对象,screen对象,history对象,location对象,弹出框,计时相关
    前端基础之BOM和DOMBOM(BrowserObjectModel):之浏览器对象模型,它使JavaScript有能力与浏览器进行'对话'。DOM(DocumentObjectModel):是指文档对象模型,通过它,可以访问HTML文档的所有元素。Window对象所有浏览器都支持window对象,他表示浏览器窗口。如果文档包含框架(fra......
  • Ubuntu Desktop - lock screen (锁屏)
    UbuntuDesktop-lockscreen[锁屏]1.SystemSettings->Security&Privacy(安全和隐私)2.SystemSettings->Keyboard->Shortcuts->System3.LockReferences1.SystemSettings->Security&Privacy(安全和隐私)使用Putty远程登录软件,如......
  • centos8 --上yum无法使用的问题以及无法用yum安装screen,iftop,nethogs等的解决办法
    centos8--上yum无法使用的问题以及无法用yum安装screen,iftop,nethogs等的解决办法大家可能都发现了centos8已经不在更新了。当我们使用yum安装某些工具的时候,会提示安装源失败解决方案:删除repo文件然后重新下载即可修复yum安装报错问题1.进入/etc/yum.repos.d/目录cd/etc......
  • 如何不中断连接保持linux服务器持续运行 —— screen 使用介绍
     请参考ck'sblog以获取最佳观感在linux服务器上跑模型的时候,有时会在终端会话中持续了一段时间后超时断开,或者因为意外情况断网,如果正常在命令行终端执行程序时,此时会中断程序的进行,这很恼火,这就意味着要让程序持续运行,就必须得保持主机和服务器的连接,程序跑一晚上,主机就......
  • DevExpress Winforms 等待界面代码 SplashScreen
    更新记录点击查看2024年3月11日发布。2023年6月12日初始化。代码//等待界面显示SplashScreenManager.ShowSkinSplashScreen(title:"正在创建新工程",subtitle:"文件准备中,请稍等~",//footer:"DeveloperExpressInc."+Environment.NewLine+"All......
  • 如何使用screen解决ssh断连训练停止的问题
    screen是一个强大的终端多路复用器,允许你在一个SSH会话中运行多个终端任务,并且即使SSH连接中断,这些任务也能继续运行。这对长时间运行的任务或训练任务非常有用,如果在这样的任务中SSH链接断开,没有screen,你会丢失对任务的控制,而有了screen,你可以在链接恢复后接着控制之前的任务。......