最近要做的项目是要求不用第三方库的情况下使用原生C实现linux上的截图,本人利用framebuffer做出了一个截图工具,但是fb里的内容截图出来的是字符界面,并不是Linux上的GUI界面。
读了读一些开源工具,比如flameshot或是gnome,他们也都是用的QT或是GTK,没法参考。
大神们有什么好主意吗,谢谢谢!!!
Linux上如何不用第三方库实现截图!!(C/C++)
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- include_iostream_ 2021-07-07 10:26关注
Linux原生不存在GUI,从一开始,它的核心就是CLI。因此,想从Linux核心库找图形功能是不可能做到的,因为Linux核心功能压根不包含图形功能。你所看到的图形界面是Gnome等桌面管理器封装的,底层是X11或Wayland等协议的实现,例如xorg,严格而言这些都是第三方库,不属于Linux核心。当然,如果你们的需求认为X11也属于核心库,那也可以做到。
以Ubuntu为例,其过去的发行版中,图形界面用的是X11协议,我记得默认用的X11服务器应该是xorg,以后可能要改wayland。再次强调,任何Linux的图形界面都是通过X11或Wayland这样的第三方协议实现的,所以需要服务器,它们不是Linux内核的核心部分。我个人没有做过Wayland的截屏,而对于X11,StackOverflow上可以找到具体的教程,比如这个:https://stackoverflow.com/questions/24988164/c-fast-screenshots-in-linux-for-use-with-opencv
(这是检索Linux截屏得到的结果,但实际上,尽管很多人默认Linux使用X11协议,但并非所有桌面管理器都真的使用X11协议。)本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 2无用
悬赏问题
- ¥15 Attention is all you need 的代码运行
- ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
- ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事:
- ¥15 前置放大电路与功率放大电路相连放大倍数出现问题
- ¥30 关于<main>标签页面跳转的问题
- ¥80 部署运行web自动化项目
- ¥15 腾讯云如何建立同一个项目中物模型之间的联系
- ¥30 VMware 云桌面水印如何添加
- ¥15 用ns3仿真出5G核心网网元
- ¥15 matlab答疑 关于海上风电的爬坡事件检测