技术好文:RobotJS截取屏幕screen.capture踩坑

简介: 技术好文: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 [/span> (bmp.width //代码效果参考:https://v.youku.com/v_show/id_XNjQwMDM5NzIyOA==.html

bmp.Height<span class=""token punctuation"">) 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</span>: screenshot.Width<span class=""token punctuation"">, Height</span>: screenshot.height });

screenJimp.write('screenshot.png');

如果你有使用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</span>: screenshot.Width<span class=""token punctuation"">, Height</span>: screenshot.height });

screenJimp.getBuffer(jimp.MIME_PNG, //代码效果参考:https://v.youku.com/v_show/id_XNjQwNjg1Mzc5Mg==.html

function (err, buffer) {

if (err) {

return;

}

const screen = cv.imdecode(Buffer.from(buffer)).cvtColor(cv.COLOR_BGR2RGB);

console.log(screen)

});


"
image.png
相关文章
|
缓存
Autojs4.1.0实战教程---快手极速版清理缓存
Autojs4.1.0实战教程---快手极速版清理缓存
737 1
|
前端开发
css 实现 title的效果,并且自己写修改类似title样式
css 实现 title的效果,并且自己写修改类似title样式
css 实现 title的效果,并且自己写修改类似title样式
|
8月前
|
Rust 安全 前端开发
Github 轻松斩获30k+ Star,桌面应用开发太丝滑啦,Tauri框架能重塑桌面App开发?别错过,抓紧上车
Tauri 是一个基于 Rust 的开源框架,用于构建轻量级、高性能、安全的跨平台桌面及移动应用。它利用系统 WebView 渲染前端界面,后端由 Rust 编写,具备出色的性能和安全性。相比 Electron,Tauri 应用体积更小、启动更快,且默认权限更安全。它支持 React、Vue、Svelte 等主流前端框架,并提供自动更新、CLI 工具链、资源注入优化等功能,适用于生产力工具、开发者工具、数据分析、AI 应用等多种场景。目前 Tauri 在 GitHub 上已获得超过 30,000 Star,社区活跃,是现代桌面应用开发的理想选择。
978 0
|
人工智能 Linux Docker
一文详解几种常见本地大模型个人知识库工具部署、微调及对比选型(1)
近年来,大模型在AI领域崭露头角,成为技术创新的重要驱动力。从AlphaGo的胜利到GPT系列的推出,大模型展现出了强大的语言生成、理解和多任务处理能力,预示着智能化转型的新阶段。然而,要将大模型的潜力转化为实际生产力,需要克服理论到实践的鸿沟,实现从实验室到现实世界的落地应用。阿里云去年在云栖大会上发布了一系列基于通义大模型的创新应用,标志着大模型技术开始走向大规模商业化和产业化。这些应用展示了大模型在交通、电力、金融、政务、教育等多个行业的广阔应用前景,并揭示了构建具有行业特色的“行业大模型”这一趋势,大模型知识库概念随之诞生。
158210 30
|
前端开发 JavaScript Android开发
移动端点击事件:原理、问题与解决方案
前端技术在移动端点击事件上的应用,涉及触屏交互、响应速度优化及用户体验提升,确保网页或应用在手机等移动设备上流畅运行。
|
资源调度 前端开发 JavaScript
vite3+vue3 实现前端部署加密混淆 javascript-obfuscator
【11月更文挑战第10天】本文介绍了在 Vite 3 + Vue 3 项目中使用 `javascript-obfuscator` 实现前端代码加密混淆的详细步骤,包括安装依赖、创建混淆脚本、修改 `package.json` 脚本命令、构建项目并执行混淆,以及在 HTML 文件中引用混淆后的文件。通过这些步骤,可以有效提高代码的安全性。
1566 2
|
XML 监控 API
淘宝商品详情数据接口全攻略:如何高效获取与分析商品信息
【淘宝商品详情数据接口全攻略】:注册开发者账号,申请API权限,构建HTTP请求获取商品信息,包括基础属性、价格等。遵循规则,处理并分析数据,用于竞品分析、价格监控和用户行为洞察。利用接口高效获取数据,助力电商决策。#淘宝API #数据分析
1042 2