【求助】怎么对桌面截屏?
godot吧
全部回复
仅看楼主
level 11
冰蓝圣雪 楼主
目标:想要把当前屏幕部分区域截屏,载入后用来分析屏幕上的数字。
我的做法:把窗口透明后显露出下面的画面,然后用了 get_viewport().get_texture().get_data() 来获取图像,保存为png图片后发现都是透明颜色,没有获取到桌面的图像数据
吧友们,该怎么做呢?
@哀家好萌_i 看你家研究过桌宠,看到希望能解答一下
2022年10月14日 17点10分 1
吧务
level 14
[啊]根据过往godot的使用记录来看,好像访问系统数据的功能都没有成功实现,我记得之前有一贴想在godot的窗口外获取鼠标坐标的,也失败了。像获取截图这样的功能……好像也找不到明显的案例,
一般访问系统数据都首先想到godot的OS类,乍一看OS类提供的访问系统数据的功能好像挺多的,但总是又缺点什么
2022年10月15日 09点10分 2
现在不在电脑前。也在想办法,如果模拟按下 PrintScreen 截屏键,再从内存里获取图像数据不知能不能行。
2022年10月15日 09点10分
@冰蓝圣雪 目前我唯一能想到的方法就是编译GDNative然后调用系统api(当然如果是4.0的话还可以用GDExtension)但是因为我只写脚本,所以一直没有编译过godot的任何模块
2022年10月15日 09点10分
@人类的大敌 也不会编译,愁!
2022年10月15日 09点10分
不是有个游戏内拍照demo吗
2022年10月19日 02点10分
level 1
var image :Image = get_viewport().get_texture().get_data();
image.flip_y();
image.save_png(path);
我的可以截屏啊。代码写在根节点的脚本文件里面
2022年10月18日 06点10分 3
我的是只能截取到自身界面内的图像,超出自身范围的、包括即使透明窗口在视觉上能看到下面的部分,都截取不到。
2022年10月19日 02点10分
level 8
GODOT4.1
var viewportTexture = get_viewport().get_texture()
var image = Image.new()
image = DisplayServer.screen_get_image(0)
print(DisplayServer.screen_get_scale(0))
image.save_png(path + "screenshot.png")
2023年07月17日 07点07分 4
level 8
没有这个api,只能去编译,或者用godot调用shell运行第三方程序。
2023年07月17日 11点07分 5
level 4
截取系统屏幕,而非游戏屏幕,并且分析屏幕上某个区域的数字,怎么看都不像是godot程序擅长的事情,这个需求我一时间想到的是opencv
2023年07月19日 14点07分 6
@空荡的通讯录 [钱]这么一说我才发现4.1新增了屏幕截图方法……其实之前我看到这个godot3时期的贴被顶上来,本来还没怎么在意。毕竟就连4.1的上一个版本4.0,都还没有支持截图屏幕的方法
2023年07月20日 06点07分
可四楼已经有正解了
2023年07月20日 05点07分
@人类的大敌 才注意到以前的帖子[喷] 。4.1 之前确实没有内置的方法了。。
2023年07月20日 07点07分
@空荡的通讯录 现在有方法了还是有用的[太开心]
2023年07月20日 07点07分
1