技术好文: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
相关文章
[笔记]音视频学习之SDL篇《十四》简单的动画
[笔记]音视频学习之SDL篇《十四》简单的动画
|
移动开发 JavaScript 前端开发
|
6月前
技术经验分享:AVFoundation播放视频时显示字幕,切换音轨
技术经验分享:AVFoundation播放视频时显示字幕,切换音轨
49 0
[笔记]音视频学习之SDL篇《十一》图片 缩放 旋转
[笔记]音视频学习之SDL篇《十一》图片 缩放 旋转
154 0
|
Python 容器
通过游戏学Python系列之小兔要上天---手把手教你使用Pygame开发平台跳跃类游戏05之滚动屏幕
通过游戏学Python系列之小兔要上天---手把手教你使用Pygame开发平台跳跃类游戏05之滚动屏幕
202 0
|
iOS开发
iOS开发-如何把广告,图片通过代码加到Screen上
iOS开发-如何把广告,图片通过代码加到Screen上
92 0
|
前端开发
前端必备的截屏取色小工具推荐——Faststone Capture
前端必备的截屏取色小工具推荐——Faststone Capture
724 0
前端必备的截屏取色小工具推荐——Faststone Capture
|
Java Python Windows
技术分享 | 网页 frame 与多窗口处理
技术分享 | 网页 frame 与多窗口处理
|
数据可视化 开发工具 图形学
从零开始制作Roll-a-ball tutoria滚动的小游戏(Unity3D)
Unity3D是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。 Unity官网设计编写了一系列比较简单的入门教程,今天我们就来看看教程的内容吧。
|
编译器
QT软件开发: 截取全屏、指定位置、当前窗口保存图片
QT软件开发: 截取全屏、指定位置、当前窗口保存图片
730 0
QT软件开发: 截取全屏、指定位置、当前窗口保存图片