createdc 窗口捕获_第2部分,简单的图形屏幕和窗口捕获

本文介绍了如何使用X Window Dump(xwd)命令在Linux和UNIX系统上捕获屏幕和特定窗口的图像,包括捕获整个屏幕、通过窗口ID捕获特定窗口,以及使用ImageMagick进行格式转换。屏幕截图在技术文档、营销材料和错误报告中起着关键作用,xwd提供了一种方便的命令行解决方案。
摘要由CSDN通过智能技术生成

为什么要捕获屏幕,窗口和对话框?

尽管许多技术作家都不愿承认这一点,但一张图片通常值一千字。 多数良好的技术文档都包括图像,通常称为屏幕截图或屏幕快照 ,这些图像会在所记录的应用程序中显示窗口和对话框。 在文档中包含图像使用户对应用程序更加满意,因为此类图像在上下文中显示菜单,对话框和常规程序交互,因此用户可以在使用过程中准确地看到要执行的操作以及应用程序的外观。

捕获此类图像不仅是写作任务。 图形应用程序的大多数营销材料包括应用程序界面或正在进行复杂工作的应用程序的重要部分的屏幕截图,以突出显示应用程序功能的外观。 曾经针对某个软件提交缺陷报告的任何人都知道,实际显示问题的屏幕快照比书面或口头描述更能树立信誉。 通过屏幕快照突出显示问题,还使开发人员更容易专注于问题的实际来源。

UNIX和Linux屏幕截图概述

所有现代Linux®和UNIX®系统都提供某种类型的图形桌面,通常包括至少一个图形屏幕捕获实用程序-最常见的是特定于特定桌面环境的实用程序。 例如,GNOME提供了gnome屏幕截图,而KDE提供了KSnapshot。 但是,每个运行X Window System的Linux和UNIX系统(换句话说,所有这些)都包含一个命令行实用程序xwd ,它可以轻松捕获整个屏幕,一个特定的窗口以及一个显示拉动窗口的窗口。下拉菜单,甚至特定的对话框。

本文的下一部分将探讨使用xwd工具从UNIX或Linux系统的图形显示中捕获不同类型的图像的各种方法。

介绍xwd实用程序

自1980年代中期以来,X窗口转储( xwd )实用程序已成为X窗口系统的一部分,麻省理工学院(MIT)雅典娜项目也是如此。 它仍然通常作为大多数X11发行版的一部分安装。 xwd实用程序使您可以捕获整个屏幕(通过捕获X11根窗口)或使用鼠标或命令行上的窗口ID标识的特定窗口。 单个窗口的图像可以仅由该窗口组成,也可以包括菜单和覆盖的对话框。

最简单的xwd命令行如下所示:

xwd > filename.xwd

执行时,此命令显示一组十字准线。 您可以使用十字准线通过右键单击要捕获图像的窗口来选择该窗口。 然后,该命令使用shell重定向将其输出写入filename.xwd文件。 xwd命令还提供了命令行选项-out ,它使您能够在命令行上指定输出文件的名称,从而消除了shell重定向的需要,如下所示:

xwd -out filename.xwd

无论您指定输出文件如何, xwd命令的输出都是通用格式的窗口图像(称为xwd格式 ),您可以轻松地将其转换为更多标准的图形格式(例如,便携式网络图形(PNG);联合摄影专家组(JPEG)或图形交换格式(GIF)),这些工具使用易于获得的实用程序(将在下一部分中进行讨论)。

xwd图像转换为更流行的格式

几乎所有Linux和UNIX系统都可以使用几种图像处理和转换工具包。 其中最常见的是ImageMagick和Netpbm工具包( 有关更多信息,请参见参考资料)。 其中,使用最广泛的可能是ImageMagick工具箱,该工具箱包含在针对各种UNIX系统的Linux工具的供应商发行版中(例如,用于Linux应用程序CD的IBM AIX Toolbox)。

ImageMagick工具包包含许多用于图形转换和处理的不同实用程序。 它包括一个实用程序(导入),它提供了xwd实用程序的命令行替代项。 在这些实用程序中,使用xwd文件时最重要的是convert实用程序,它使您可以将图像从一种格式转换为另一种格式。 您可以通过在输出文件名之前加上图像格式的缩写,或通过将目标图像格式指定为输出文件的文件扩展名,来指定要将图像转换为的格式。 例如,以下两个命令均生成PNG格式的输出文件:

convert filename.xwd PNG:filename.image
    convert filename.xwd filename.png

如果您不希望输出文件具有特定于格式的文件扩展名,则将输出格式指定为前缀的功能很方便。 图1显示了一个简单的GNOME终端窗口的屏幕截图,该窗口已转换为PNG格式。

图1.终端窗口的转换屏幕截图
终端窗口的转换屏幕截图

捕获整个屏幕

前面使用xwd命令的示例要求您交互选择一个特定窗口。 在某些情况下,您可能希望捕获整个屏幕以同时显示多个应用程序窗口的内容和位置。 xwd命令提供了-root选项,使您能够通过捕获X Window System根窗口来执行此操作,该窗口是在所有其他X Window System窗口和显示的对话框之上的全显示窗口。 以下命令捕获整个屏幕并将其写入full-screen.xwd文件:

xwd -root -out full-screen.xwd

-root选项一起使用时, xwd命令是非交互式的,因为您正在捕获所有内容。 如果您需要捕获处于特定状态的特定窗口(例如显示菜单或其他交互操作),则可以通过延迟捕获根窗口的时间来做到这一点(让您有时间在屏幕顶部设置屏幕)您想要的方式)。 为此,请使用在所有UNIX和Linux系统上找到的sleep命令,该命令仅等待指定的秒数,如以下示例所示:

sleep 15 ; xwd -root -out full-screen.xwd

此命令序列使您有15秒钟的时间来显示要执行xwd命令之前要捕获的菜单或对话框。

捕获特定窗口

在不带参数的情况下执行xwd命令时,需要以交互方式选择要捕获的窗口,如果要显示特定菜单,可能会出现问题。 在大多数情况下,选择窗口的操作是鼠标事件,当正在进行任何其他未决鼠标事件(例如选择菜单项)时,鼠标事件将无法进行。 尝试捕获带有未决鼠标事件的窗口会导致错误消息,如以下示例所示:

$ sleep 10 ; xwd -out window2.xwd
    xwd: error: Can't grab the mouse.

您可以通过利用xwd命令的其他命令行选项来解决此问题。 尝试使用的第一个选项是-id选项,该选项可让您指定要捕获的窗口的X窗口系统ID,因此不需要选择窗口。 确定窗口的X窗口系统ID的最简单方法是使用xwininfo命令,该命令提供该信息以及有关特定窗口的位置和外观的大量信息。 当执行xwininfo命令时,将显示一组十字线。 使用十字准线单击要获取其信息的窗口。 清单1中显示了一个示例xwininfo命令及其输出。

清单1. xwininfo命令的缩写输出
$ xwininfo

    xwininfo: Please select the window about which you
              would like information by clicking the
	      mouse in that window.

    xwininfo: Window id: 0x2c435b4 (has no name)

    Absolute upper-left X:  1811
    Absolute upper-left Y:  99
    Relative upper-left X:  1811
    Relative upper-left Y:  99
    ...
    Corners:  +1811+99  -423+99  -423-116  +1811-116
    -geometry 1126x835+1811+99

使用此信息中的窗口ID,可以通过以下命令结合使用sleep命令和xwd命令的-id选项施加延迟,以捕获窗口以及任何菜单或其他瞬态图形:

sleep 15 ; xwd -id 0x2c435b4 -out window-with-menu.xwd

图2显示了与图1所示相同窗口的屏幕截图,但显示了菜单。

图2.带有菜单的终端窗口的屏幕截图
带有菜单的终端窗口的屏幕截图

通过ID标识窗口的一个副作用是,基于窗口ID的屏幕捕获可能不会捕获覆盖在指定窗口上的其他窗口,例如对话框。 所有窗口,甚至对话框,都有其自己的ID,并且一次只能指定一个ID。 是否捕获上方的窗口取决于所使用的图形环境。 要解决捕获上方窗口的潜在问题,可以使用xwd命令的-screen选项,该选项指定要相对于根窗口捕获窗口的内容,如以下示例所示:

sleep 15 ; xwd -id 0x2c435b4 -screen -out window-with-menu.xwd

-screen选项会捕获出现在根窗口上方的窗口,因此包括所有覆盖对话框,正在进行的菜单操作等。

摘要

xwd命令可用于每个Linux和UNIX发行版,并且作为命令行应用程序,提供了独立于图形用户界面(GUI)的简单屏幕和窗口捕获工具。 将xwd与免费提供的图形工具包(例如ImageMagick和Netpbm)结合使用,可以轻松地在您选择的平台上捕获屏幕图像,并以文档,市场营销,错误报告以及可能确实需要图片的其他目的所需的任何图形格式提供它们为您节省一千个描述字。

本文讨论的命令行屏幕和窗口捕获工具都易于使用,并且可在所有Linux和UNIX系统上使用,但是不同的Linux和UNIX系统也提供了各种图形工具,以进一步简化屏幕和窗口图像的捕获。 本系列的下一篇文章讨论在不同的Linux和UNIX系统上可用的图形屏幕捕获工具。


翻译自: https://www.ibm.com/developerworks/aix/library/au-screenshots2/index.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值