我有一个程序可以获取robotjs屏幕截图并将其保存到文件中,例如1 fps 的实时流。
const Jimp=require("jimp");
const robot=require("robotjs");
const fs=require("fs");
setInterval(function(){
var img=robot.screen.capture();
new Jimp({
"data":img.image,
"width":img.width,
"height":img.height
},function(err,image){
if(err){
fs.writeFile(__dirname+"/data/screen.png","",function(){});
}else{
image.write(__dirname+"/data/screen.png");
}
});
},1000);
在当前时刻,每一秒它:
- 截屏
- 从中创建一个 Jimp 实例
- 将其写入
screen.png
我想不出任何明显的原因来解释为什么在我截屏时会导致某些颜色反转。
例如,当我在访问 Stack Overflow 后查看图像时,Stack Overflow 图标看起来是蓝色而不是通常的橙色,然后等待一秒钟(以便它可以截取我看截图的截图),在截图中在屏幕截图中,颜色恢复正常——原来的橙色 SO 标志。截图中的截图又是蓝色的,以此类推。需要注意的重要一点是,并非所有颜色都是反转的 - 徽标是反转的,但白色背景不是。
我app.js
用node app.js
. 我尝试的一件事是从 robotsjs 屏幕截图创建一个 Jimp 实例,然后从 Jimp 实例创建一个 Jimp 实例,这样希望颜色会反转回来,但它看起来是一样的。我猜这个问题与robotjs图像数据有关,但我不能确定。
如何获得未更改的屏幕截图并将其保存到文件中?
编辑:
这是一个例子:
正常(非反转)颜色:
反转颜色: