技术好文: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 前端开发
|
3月前
|
机器学习/深度学习 算法 云计算
文字改视频技术:Rerender A Video
Rerender A Video 的实现技术结合了深度学习、计算机视觉、图像处理、GPU 加速和云计算等多种先进技术,旨在提供高效、优质的视频渲染和增强功能。
47 2
|
区块链
EasyX趣味化编程note6,图片操作及文字
EasyX趣味化编程note6,图片操作及文字
117 0
[笔记]音视频学习之SDL篇《十一》图片 缩放 旋转
[笔记]音视频学习之SDL篇《十一》图片 缩放 旋转
150 0
|
存储 算法 Java
摸鱼时,我用几百张字符画做了个动画......
事情是这样的… … 学校马上就要开展第20届程序设计大赛了,半年没有练习算法的我,此刻内心可谓战战兢兢。简单复习了些Java数据结构与算法的知识后,就开始了牛客网的刷题之路,这不,遇到个熟悉的N皇后问题:
摸鱼时,我用几百张字符画做了个动画......
|
iOS开发
iOS开发-如何把广告,图片通过代码加到Screen上
iOS开发-如何把广告,图片通过代码加到Screen上
87 0
|
前端开发
前端必备的截屏取色小工具推荐——Faststone Capture
前端必备的截屏取色小工具推荐——Faststone Capture
717 0
前端必备的截屏取色小工具推荐——Faststone Capture
|
Java Python Windows
技术分享 | 网页 frame 与多窗口处理
技术分享 | 网页 frame 与多窗口处理
关于 qml开发中使用Image元素切换图片闪黑屏 的解决方法
关于 qml开发中使用Image元素切换图片闪黑屏 的解决方法
关于 qml开发中使用Image元素切换图片闪黑屏 的解决方法