Chinaunix首页 | 论坛 | 博客
  • 博客访问: 568718
  • 博文数量: 185
  • 博客积分: 4031
  • 博客等级: 上校
  • 技术积分: 1591
  • 用 户 组: 普通用户
  • 注册时间: 2009-05-27 19:45
文章分类

全部博文(185)

文章存档

2011年(14)

2010年(63)

2009年(108)

我的朋友

分类:

2009-06-26 13:59:56

homepage:

终端里截屏--fbgrab
今天无聊看了几个网页,里面提到用 fbgrab 在 Linux 终端下进行屏幕截取。默认下,我们如果在字符界面下操作 Linux,是不能直接用键盘上的 PrintScreen 键来截取整个屏幕的。但是使用 fbgrab 就可以达到字符终端截屏这一目的。
fbgrab 是利用 FrameBuffer 来完成终端截屏工作了,关于 FrameBuffer 这里就不介绍了,因为我也不太懂!只要记住它是一个抽象设备:设定显存或者是内存或者是硬盘的一部分空间,然后往这块空间里的任何读写操作都会直接反应在 整个屏幕上。我们的RHEL5的 linux内核版本 默认是支持 FrameBuffer 的,并包含了 VESA FrameBuffer 驱动程序,然而却没有自动开启 FrameBuffer 功能。

我们下面的步骤就是要实现终端截屏。
(1)开启 FrameBuffer 支持
由 于现在新版本的GNU/Linux系统基本默认使用 GRUB 作为引导程序,所以可以直接在  /boot/grub/menu.lst 中修改内核选项,在 kernel /vmlinuz-2.6.18-128.el5 ro root=/dev/md0 rhgb quiet 后面添加 vga=0x0317 字段,用以在系统引导时激活 VESA FrameBuffer 驱动程序。
修改后的 menu.lst 内容如下
------------------------------------------------------------
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/md0
#          initrd /initrd-version.img
#boot=/dev/hda1
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux Server (2.6.18-128.el5)
    root (hd0,0)
    kernel /vmlinuz-2.6.18-128.el5 ro root=/dev/md0 rhgb quiet vga=0x0317
    initrd /initrd-2.6.18-128.el5.img
------------------------------------------------------------
完成之后,我们可以重新启动系统,在启动时会看到下面的画面(有一只可爱的小企鹅Logo),然后就是正常我们平常看到的Linux启动画面。这表明我们成功开启了 Linux 的 FrameBuffer 支持。


(2)安装 fbgrab
从 网上搜索fbgran并到起官方网站抓下 fbgrab 软件包,解压后查看INSTALL文件,需要 libpng、libz、splint等依赖,可以发现我的 RHEL5 仅没有提供 libz 。于是又到 zlib 的官方抓下 zlib 包(没错,就是zlib,它提供libz)。解压后据其README文件安装之,命令如下:
------------------------------
./configure
make test
 make install
------------------------------
以 来安装好之后,我们就可以着手安装 fbgrab 了。如果直接按照 fbgrab 的INSTALL就这样安装了,会提示 splint报错。其实,splint 依赖不是必须的,所以我们可以在 fbgrab 的 Makefile 中把有 splint 的那行注释掉,然后安装之,命令如下:
------------------------------
make
make install
------------------------------
好了,一切就绪,就等着我们使用 fbgrab 来截屏了。
最简单的使用方法是在终端中敲命令 fbgrab ***.png 就可以成功截取了,当然它其实还可以设置延时等参数的,具体使用去使用 fbgrab --help 吧,或者 google 之。下面给出分别在图形界面和字符界面下的截图供观赏。

 图形界面下截图

  字符界面下截图
阅读(1770) | 评论(1) | 转发(0) |
0

上一篇:深入理解sizeof

下一篇:Curl 用法

给主人留下些什么吧!~~

renshijianyou2012-11-22 10:04:00

Framebuffer为何在图形界面下截出的图完全模糊??????????
终端界面下倒是很好,求解???